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,1034 @@
1
+ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
+ University of Illinois Open Source License
3
+ Copyright 2003 Theoretical and Computational Biophysics Group,
4
+ All rights reserved.
5
+
6
+ Developed by: Theoretical and Computational Biophysics Group
7
+ University of Illinois at Urbana-Champaign
8
+ http://www.ks.uiuc.edu/
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
11
+ this software and associated documentation files (the Software), to deal with
12
+ the Software without restriction, including without limitation the rights to
13
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
14
+ of the Software, and to permit persons to whom the Software is furnished to
15
+ do so, subject to the following conditions:
16
+
17
+ Redistributions of source code must retain the above copyright notice,
18
+ this list of conditions and the following disclaimers.
19
+
20
+ Redistributions in binary form must reproduce the above copyright notice,
21
+ this list of conditions and the following disclaimers in the documentation
22
+ and/or other materials provided with the distribution.
23
+
24
+ Neither the names of Theoretical and Computational Biophysics Group,
25
+ University of Illinois at Urbana-Champaign, nor the names of its contributors
26
+ may be used to endorse or promote products derived from this Software without
27
+ specific prior written permission.
28
+
29
+ THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
32
+ THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
33
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
34
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
35
+ OTHER DEALINGS WITH THE SOFTWARE.
36
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
37
+ #ifndef __PLUMED_molfile_molfile_plugin_h
38
+ #define __PLUMED_molfile_molfile_plugin_h
39
+ /***************************************************************************
40
+ *cr
41
+ *cr (C) Copyright 1995-2006 The Board of Trustees of the
42
+ *cr University of Illinois
43
+ *cr All Rights Reserved
44
+ *cr
45
+ ***************************************************************************/
46
+
47
+ /***************************************************************************
48
+ * RCS INFORMATION:
49
+ *
50
+ * $RCSfile: molfile_plugin.h,v $
51
+ * $Author: johns $ $Locker: $ $State: Exp $
52
+ * $Revision: 1.112 $ $Date: 2019/10/17 06:12:24 $
53
+ *
54
+ ***************************************************************************/
55
+
56
+ /** @file
57
+ * API for C extensions to define a way to load structure, coordinate,
58
+ * trajectory, and volumetric data files
59
+ */
60
+
61
+ #ifndef MOL_FILE_PLUGIN_H
62
+ #define MOL_FILE_PLUGIN_H
63
+
64
+ #include "vmdplugin.h"
65
+
66
+ namespace PLMD{
67
+ namespace molfile{
68
+
69
+ #if defined(DESRES_READ_TIMESTEP2)
70
+ /* includes needed for large integer types used for frame counts */
71
+ #include <sys/types.h>
72
+ typedef ssize_t molfile_ssize_t; /**< for frame counts */
73
+ #endif
74
+
75
+ /**
76
+ * Define a common plugin type to be used when registering the plugin.
77
+ */
78
+ #define MOLFILE_PLUGIN_TYPE "mol file reader"
79
+
80
+ /**
81
+ * File converter plugins use the same API but register under a different
82
+ * type so that regular file readers can have priority.
83
+ */
84
+ #define MOLFILE_CONVERTER_PLUGIN_TYPE "mol file converter"
85
+
86
+ /* File plugin symbolic constants for better code readability */
87
+ #define MOLFILE_SUCCESS 0 /**< succeeded in reading file */
88
+ #define MOLFILE_EOF -1 /**< end of file */
89
+ #define MOLFILE_ERROR -1 /**< error reading/opening a file */
90
+ #define MOLFILE_NOSTRUCTUREDATA -2 /**< no structure data in this file */
91
+
92
+ #define MOLFILE_NUMATOMS_UNKNOWN -1 /**< unknown number of atoms */
93
+ #define MOLFILE_NUMATOMS_NONE 0 /**< no atoms in this file type */
94
+
95
+ /**
96
+ * Maximum string size macro
97
+ */
98
+ #define MOLFILE_BUFSIZ 81 /**< maximum chars in string data */
99
+ #define MOLFILE_BIGBUFSIZ 4096 /**< maximum chars in long strings */
100
+
101
+ #define MOLFILE_MAXWAVEPERTS 25 /**< maximum number of wavefunctions
102
+ * per timestep */
103
+
104
+ /**
105
+ * Hard-coded direct-I/O page size constants for use by both VMD
106
+ * and the plugins that want to use direct, unbuffered I/O for high
107
+ * performance with SSDs etc. We use two constants to define the
108
+ * range of hardware page sizes that we can support, so that we can
109
+ * add support for larger 8KB or 16KB page sizes in the future
110
+ * as they become more prevalent in high-end storage systems.
111
+ *
112
+ * At present, VMD uses a hard-coded 4KB page size to reduce memory
113
+ * fragmentation, but these constants will make it easier to enable the
114
+ * use of larger page sizes in the future if it becomes necessary.
115
+ */
116
+ #define MOLFILE_DIRECTIO_MIN_BLOCK_SIZE 4096
117
+ #define MOLFILE_DIRECTIO_MAX_BLOCK_SIZE 4096
118
+
119
+
120
+ /**
121
+ * File level comments, origin information, and annotations.
122
+ */
123
+ typedef struct {
124
+ char database[81]; /**< database of origin, if any */
125
+ char accession[81]; /**< database accession code, if any */
126
+ char date[81]; /**< date/time stamp for this data */
127
+ char title[81]; /**< brief title for this data */
128
+ int remarklen; /**< length of remarks string */
129
+ char *remarks; /**< free-form remarks about data */
130
+ } molfile_metadata_t;
131
+
132
+
133
+ /*
134
+ * Struct for specifying atoms in a molecular structure. The first
135
+ * six components are required, the rest are optional and their presence is
136
+ * indicating by setting the corresponding bit in optsflag. When omitted,
137
+ * the application (for read_structure) or plugin (for write_structure)
138
+ * must be able to supply default values if the missing parameters are
139
+ * part of its internal data structure.
140
+ * Note that it is not possible to specify coordinates with this structure.
141
+ * This is intentional; all coordinate I/O is done with the read_timestep and
142
+ * write_timestep functions.
143
+ */
144
+
145
+ /**
146
+ * Per-atom attributes and information.
147
+ */
148
+ typedef struct {
149
+ /* these fields absolutely must be set or initialized to empty */
150
+ char name[16]; /**< required atom name string */
151
+ char type[16]; /**< required atom type string */
152
+ char resname[8]; /**< required residue name string */
153
+ int resid; /**< required integer residue ID */
154
+ char segid[8]; /**< required segment name string, or "" */
155
+ #if 0 && vmdplugin_ABIVERSION > 10000
156
+ /* The new PDB file formats allows for much larger structures, */
157
+ /* which can therefore require longer chain ID strings. The */
158
+ /* new PDBx/mmCIF file formats do not have length limits on */
159
+ /* fields, so PDB chains could be arbitrarily long strings */
160
+ /* in such files. At present, we know we need at least 3-char */
161
+ /* chains for existing PDBx/mmCIF files. */
162
+ char chain[4]; /**< required chain name, or "" */
163
+ #else
164
+ char chain[2]; /**< required chain name, or "" */
165
+ #endif
166
+ /* rest are optional; use optflags to specify what's present */
167
+ char altloc[2]; /**< optional PDB alternate location code */
168
+ char insertion[2]; /**< optional PDB insertion code */
169
+ float occupancy; /**< optional occupancy value */
170
+ float bfactor; /**< optional B-factor value */
171
+ float mass; /**< optional mass value */
172
+ float charge; /**< optional charge value */
173
+ float radius; /**< optional radius value */
174
+ int atomicnumber; /**< optional element atomic number */
175
+
176
+ #if 0
177
+ char complex[16];
178
+ char assembly[16];
179
+ int qmregion;
180
+ int qmregionlink;
181
+ int qmlayer;
182
+ int qmlayerlink;
183
+ int qmfrag;
184
+ int qmfraglink;
185
+ string qmecp;
186
+ int qmadapt;
187
+ int qmect; /**< boolean */
188
+ int qmparam;
189
+ int autoparam;
190
+ #endif
191
+
192
+ #if defined(DESRES_CTNUMBER)
193
+ int ctnumber; /**< mae ct block, 0-based, including meta */
194
+ #endif
195
+ } molfile_atom_t;
196
+
197
+ /*@{*/
198
+ /** Plugin optional data field availability flag */
199
+ #define MOLFILE_NOOPTIONS 0x0000 /**< no optional data */
200
+ #define MOLFILE_INSERTION 0x0001 /**< insertion codes provided */
201
+ #define MOLFILE_OCCUPANCY 0x0002 /**< occupancy data provided */
202
+ #define MOLFILE_BFACTOR 0x0004 /**< B-factor data provided */
203
+ #define MOLFILE_MASS 0x0008 /**< Atomic mass provided */
204
+ #define MOLFILE_CHARGE 0x0010 /**< Atomic charge provided */
205
+ #define MOLFILE_RADIUS 0x0020 /**< Atomic VDW radius provided */
206
+ #define MOLFILE_ALTLOC 0x0040 /**< Multiple conformations present */
207
+ #define MOLFILE_ATOMICNUMBER 0x0080 /**< Atomic element number provided */
208
+ #define MOLFILE_BONDSSPECIAL 0x0100 /**< Only non-standard bonds provided */
209
+ #if defined(DESRES_CTNUMBER)
210
+ #define MOLFILE_CTNUMBER 0x0200 /**< ctnumber provided */
211
+ #endif
212
+ #define MOLFILE_BADOPTIONS 0xFFFFFFFF /**< Detect badly behaved plugins */
213
+
214
+ /*@}*/
215
+
216
+ /*@{*/
217
+ /** Flags indicating availability of optional data fields
218
+ * for QM timesteps
219
+ */
220
+ #define MOLFILE_QMTS_NOOPTIONS 0x0000 /**< no optional data */
221
+ #define MOLFILE_QMTS_GRADIENT 0x0001 /**< energy gradients provided */
222
+ #define MOLFILE_QMTS_SCFITER 0x0002
223
+ /*@}*/
224
+
225
+ typedef struct molfile_timestep_metadata {
226
+ unsigned int count; /**< total # timesteps; -1 if unknown */
227
+ unsigned int avg_bytes_per_timestep; /** bytes per timestep */
228
+ int has_velocities; /**< if timesteps have velocities */
229
+ } molfile_timestep_metadata_t;
230
+
231
+
232
+ /*
233
+ *
234
+ * Per-timestep atom coordinates, velocities, forces, energies,
235
+ * and periodic cell information
236
+ *
237
+ */
238
+
239
+ #if 0
240
+ /**
241
+ * Periodically stored energies of various kinds
242
+ */
243
+ typedef struct {
244
+ int energyflags; // XXX indicate use and semantics of data fields
245
+
246
+ double total_energy; // XXX these copied from DESRES_READ_TIMESTEP2 case
247
+ double potential_energy;
248
+ double kinetic_energy;
249
+ double extended_energy;
250
+ double force_energy;
251
+ double total_pressure;
252
+
253
+ // Alchemical free energy methods need to store individual energy samples.
254
+ // We don't really want pre-averaged quantities, they lead to problems later.
255
+ double lambda; // data gen sim parm: + aux scheduling + soft core parm
256
+ double temperature; // temp set by thermostat
257
+ // either we use deltaU, or we store U and Uprime...
258
+ double deltaU; // Ulambda - Ulambdaprime
259
+ double Ulambda; // U for lambda
260
+ double Ulambdaprime; // U for lambdaprime
261
+
262
+ // IDWS methods
263
+ // XXX both values of lambdaprime and required de-interleaving information
264
+
265
+ // Replica exchange methods
266
+ // XXX rectangle sample params?
267
+
268
+ // REST2 method
269
+ // XXX
270
+
271
+ } molfile_energies_t;
272
+ #endif
273
+
274
+
275
+ /**
276
+ * Per-timestep atom coordinates, velocities, time, energies
277
+ * and periodic cell info
278
+ */
279
+ typedef struct {
280
+ float *coords; /**< coordinates of all atoms, arranged xyzxyzxyz */
281
+ float *velocities; /**< space for velocities of all atoms; same layout */
282
+ /**< NULL unless has_velocities is set */
283
+
284
+ /*@{*/
285
+ /**
286
+ * Unit cell specification of the form A, B, C, alpha, beta, gamma.
287
+ * notes: A, B, C are side lengths of the unit cell
288
+ * alpha = angle between b and c
289
+ * beta = angle between a and c
290
+ * gamma = angle between a and b
291
+ */
292
+ float A, B, C, alpha, beta, gamma;
293
+ /*@}*/
294
+
295
+ double physical_time; /**< physical time point associated with this frame */
296
+
297
+ #if defined(DESRES_READ_TIMESTEP2)
298
+ /* HACK to support generic trajectory information */
299
+ double total_energy;
300
+ double potential_energy;
301
+ double kinetic_energy;
302
+ double extended_energy;
303
+ double force_energy;
304
+ double total_pressure;
305
+ #endif
306
+
307
+ } molfile_timestep_t;
308
+
309
+
310
+ /**
311
+ * Metadata for volumetric datasets, read initially and used for subsequent
312
+ * memory allocations and file loading.
313
+ */
314
+ typedef struct {
315
+ char dataname[256]; /**< name of volumetric data set */
316
+ float origin[3]; /**< origin: origin of volume (x=0, y=0, z=0 corner */
317
+
318
+ /*
319
+ * x/y/z axis:
320
+ * These the three cell sides, providing both direction and length
321
+ * (not unit vectors) for the x, y, and z axes. In the simplest
322
+ * case, these would be <size,0,0> <0,size,0> and <0,0,size) for
323
+ * an orthogonal cubic volume set. For other cell shapes these
324
+ * axes can be oriented non-orthogonally, and the parallelpiped
325
+ * may have different side lengths, not just a cube/rhombus.
326
+ */
327
+ float xaxis[3]; /**< direction (and length) for X axis */
328
+ float yaxis[3]; /**< direction (and length) for Y axis */
329
+ float zaxis[3]; /**< direction (and length) for Z axis */
330
+
331
+ /*
332
+ * x/y/z size:
333
+ * Number of grid cells along each axis. This is _not_ the
334
+ * physical size of the box, this is the number of voxels in each
335
+ * direction, independent of the shape of the volume set.
336
+ */
337
+ int xsize; /**< number of grid cells along the X axis */
338
+ int ysize; /**< number of grid cells along the Y axis */
339
+ int zsize; /**< number of grid cells along the Z axis */
340
+
341
+ #if vmdplugin_ABIVERSION > 16
342
+ int has_scalar; /**< flag indicating presence of scalar volume */
343
+ int has_gradient; /**< flag indicating presence of vector volume */
344
+ int has_variance; /**< flag indicating presence of variance map */
345
+ #endif
346
+ int has_color; /**< flag indicating presence of voxel color data */
347
+ } molfile_volumetric_t;
348
+
349
+
350
+ #if vmdplugin_ABIVERSION > 16
351
+ /**
352
+ * Volumetric dataset read/write structure with both flag/parameter sets
353
+ * and VMD-allocated pointers for fields to be used by the plugin.
354
+ */
355
+ typedef struct {
356
+ int setidx; /**< volumetric dataset index to load/save */
357
+ float *scalar; /**< scalar density/potential field data */
358
+ float *gradient; /**< gradient vector field */
359
+ float *variance; /**< variance map indicating signal/noise */
360
+ float *rgb3f; /**< RGB floating point color texture map */
361
+ unsigned char *rgb3u; /**< RGB unsigned byte color texture map */
362
+ } molfile_volumetric_readwrite_t;
363
+ #endif
364
+
365
+
366
+ /**************************************************************
367
+ **************************************************************
368
+ **** ****
369
+ **** Data structures for QM files ****
370
+ **** ****
371
+ **************************************************************
372
+ **************************************************************/
373
+
374
+ /* macros for the convergence status of a QM calculation. */
375
+ #define MOLFILE_QMSTATUS_UNKNOWN -1 /* don't know yet */
376
+ #define MOLFILE_QMSTATUS_OPT_CONV 0 /* optimization converged */
377
+ #define MOLFILE_QMSTATUS_SCF_NOT_CONV 1 /* SCF convergence failed */
378
+ #define MOLFILE_QMSTATUS_OPT_NOT_CONV 2 /* optimization not converged */
379
+ #define MOLFILE_QMSTATUS_FILE_TRUNCATED 3 /* file was truncated */
380
+
381
+ /* macros describing the SCF method (SCFTYP in GAMESS) */
382
+ #define MOLFILE_SCFTYPE_UNKNOWN -1 /* no info about the method */
383
+ #define MOLFILE_SCFTYPE_NONE 0 /* calculation didn't make use of SCF */
384
+ #define MOLFILE_SCFTYPE_RHF 1 /* restricted Hartree-Fock */
385
+ #define MOLFILE_SCFTYPE_UHF 2 /* unrestricted Hartree-Fock */
386
+ #define MOLFILE_SCFTYPE_ROHF 3 /* restricted open-shell Hartree-Fock */
387
+ #define MOLFILE_SCFTYPE_GVB 4 /* generalized valence bond orbitals */
388
+ #define MOLFILE_SCFTYPE_MCSCF 5 /* multi-configuration SCF */
389
+ #define MOLFILE_SCFTYPE_FF 6 /* classical force-field based sim. */
390
+
391
+ /* macros describing the type of calculation (RUNTYP in GAMESS) */
392
+ #define MOLFILE_RUNTYPE_UNKNOWN 0 /* single point run */
393
+ #define MOLFILE_RUNTYPE_ENERGY 1 /* single point run */
394
+ #define MOLFILE_RUNTYPE_OPTIMIZE 2 /* geometry optimization */
395
+ #define MOLFILE_RUNTYPE_SADPOINT 3 /* saddle point search */
396
+ #define MOLFILE_RUNTYPE_HESSIAN 4 /* Hessian/frequency calculation */
397
+ #define MOLFILE_RUNTYPE_SURFACE 5 /* potential surface scan */
398
+ #define MOLFILE_RUNTYPE_GRADIENT 6 /* energy gradient calculation */
399
+ #define MOLFILE_RUNTYPE_MEX 7 /* minimum energy crossing */
400
+ #define MOLFILE_RUNTYPE_DYNAMICS 8 /* Any type of molecular dynamics
401
+ * e.g. Born-Oppenheimer, Car-Parinello,
402
+ * or classical MD */
403
+ #define MOLFILE_RUNTYPE_PROPERTIES 9 /* Properties were calculated from a
404
+ * wavefunction that was read from file */
405
+
406
+
407
+ /**
408
+ * Sizes of various QM-related, timestep independent data arrays
409
+ * which must be allocated by the caller (VMD) so that the plugin
410
+ * can fill in the arrays with data.
411
+ */
412
+ typedef struct {
413
+ /* hessian data */
414
+ int nimag; /**< number of imaginary modes */
415
+ int nintcoords; /**< number internal coordinates */
416
+ int ncart; /**< number cartesian coordinates */
417
+
418
+ /* orbital/basisset data */
419
+ int num_basis_funcs; /**< number of uncontracted basis functions in basis array */
420
+ int num_basis_atoms; /**< number of atoms in basis set */
421
+ int num_shells; /**< total number of atomic shells */
422
+ int wavef_size; /**< size of the wavefunction
423
+ * i.e. size of secular eq. or
424
+ * # of cartesian contracted
425
+ * gaussian basis functions */
426
+
427
+ /* everything else */
428
+ int have_sysinfo;
429
+ int have_carthessian; /**< hessian in cartesian coords available */
430
+ int have_inthessian; /**< hessian in internal coords available */
431
+ int have_normalmodes; /**< normal modes available */
432
+ } molfile_qm_metadata_t;
433
+
434
+
435
+ /**
436
+ * QM run info. Parameters that stay unchanged during a single file.
437
+ */
438
+ typedef struct {
439
+ int nproc; /**< number of processors used. */
440
+ int memory; /**< amount of memory used in Mbyte. */
441
+ int runtype; /**< flag indicating the calculation method. */
442
+ int scftype; /**< SCF type: RHF, UHF, ROHF, GVB or MCSCF wfn. */
443
+ int status; /**< indicates wether SCF and geometry optimization
444
+ * have converged properly. */
445
+ int num_electrons; /**< number of electrons. XXX: can be fractional in some DFT codes */
446
+ int totalcharge; /**< total charge of system. XXX: can be fractional in some DFT codes */
447
+ int num_occupied_A; /**< number of occupied alpha orbitals */
448
+ int num_occupied_B; /**< number of occupied beta orbitals */
449
+
450
+ double *nuc_charge; /**< array(natom) containing the nuclear charge of atom i */
451
+
452
+ char basis_string[MOLFILE_BUFSIZ]; /**< basis name as "nice" string. */
453
+ char runtitle[MOLFILE_BIGBUFSIZ]; /**< title of run. */
454
+ char geometry[MOLFILE_BUFSIZ]; /**< type of provided geometry, XXX: remove?
455
+ * e.g. UNIQUE, ZMT, CART, ... */
456
+ char version_string[MOLFILE_BUFSIZ]; /**< QM code version information. */
457
+ } molfile_qm_sysinfo_t;
458
+
459
+
460
+ /**
461
+ * Data for QM basis set
462
+ */
463
+ typedef struct {
464
+ int *num_shells_per_atom; /**< number of shells per atom */
465
+ int *num_prim_per_shell; /**< number of shell primitives shell */
466
+
467
+ float *basis; /**< contraction coeffients and exponents for
468
+ * the basis functions in the form
469
+ * {exp(1), c-coeff(1), exp(2), c-coeff(2), ...};
470
+ * array size = 2*num_basis_funcs
471
+ * The basis must NOT be normalized. */
472
+ int *atomic_number; /**< atomic numbers (chem. element) of atoms in basis set */
473
+ int *angular_momentum; /**< 3 ints per wave function coefficient do describe the
474
+ * cartesian components of the angular momentum.
475
+ * E.g. S={0 0 0}, Px={1 0 0}, Dxy={1 1 0}, or Fyyz={0 2 1}.
476
+ */
477
+ int *shell_types; /**< type for each shell in basis */
478
+ } molfile_qm_basis_t;
479
+
480
+
481
+ /**
482
+ * Data from QM Hessian/normal mode runs
483
+ *
484
+ * A noteworthy comment from one of Axel's emails:
485
+ * The molfile_qm_hessian_t, I'd rename to molfile_hessian_t (one
486
+ * can do vibrational analysis without QM) and would make this a
487
+ * completely separate entity. This could then be also used to
488
+ * read in data from, say, principal component analysis or normal
489
+ * mode analysis and VMD could contain code to either project a
490
+ * trajectory on the contained eigenvectors or animate them and
491
+ * so on. There is a bunch of possible applications...
492
+ */
493
+ typedef struct {
494
+ double *carthessian; /**< hessian matrix in cartesian coordinates (ncart)*(ncart)
495
+ * as a single array of doubles (row(1), ...,row(natoms)) */
496
+ int *imag_modes; /**< list(nimag) of imaginary modes */
497
+ double *inthessian; /**< hessian matrix in internal coordinates
498
+ * (nintcoords*nintcoords) as a single array of
499
+ * doubles (row(1), ...,row(nintcoords)) */
500
+ float *wavenumbers; /**< array(ncart) of wavenumbers of normal modes */
501
+ float *intensities; /**< array(ncart) of intensities of normal modes */
502
+ float *normalmodes; /**< matrix(ncart*ncart) of normal modes */
503
+ } molfile_qm_hessian_t;
504
+
505
+
506
+ /**
507
+ * QM related information that is timestep independent
508
+ */
509
+ typedef struct {
510
+ molfile_qm_sysinfo_t run; /* system info */
511
+ molfile_qm_basis_t basis; /* basis set info */
512
+ molfile_qm_hessian_t hess; /* hessian info */
513
+ } molfile_qm_t;
514
+
515
+
516
+
517
+ /**
518
+ * Enumeration of all of the wavefunction types that can be read
519
+ * from QM file reader plugins.
520
+ *
521
+ * CANON = canonical (i.e diagonalized) wavefunction
522
+ * GEMINAL = GVB-ROHF geminal pairs
523
+ * MCSCFNAT = Multi-Configuration SCF natural orbitals
524
+ * MCSCFOPT = Multi-Configuration SCF optimized orbitals
525
+ * CINATUR = Configuration-Interaction natural orbitals
526
+ * BOYS = Boys localization
527
+ * RUEDEN = Ruedenberg localization
528
+ * PIPEK = Pipek-Mezey population localization
529
+ *
530
+ * NBO related localizations:
531
+ * --------------------------
532
+ * NAO = Natural Atomic Orbitals
533
+ * PNAO = pre-orthogonal NAOs
534
+ * NBO = Natural Bond Orbitals
535
+ * PNBO = pre-orthogonal NBOs
536
+ * NHO = Natural Hybrid Orbitals
537
+ * PNHO = pre-orthogonal NHOs
538
+ * NLMO = Natural Localized Molecular Orbitals
539
+ * PNLMO = pre-orthogonal NLMOs
540
+ *
541
+ * UNKNOWN = Use this for any type not listed here
542
+ * You can use the string field for description
543
+ */
544
+ enum molfile_qm_wavefunc_type {
545
+ MOLFILE_WAVE_CANON, MOLFILE_WAVE_GEMINAL,
546
+ MOLFILE_WAVE_MCSCFNAT, MOLFILE_WAVE_MCSCFOPT,
547
+ MOLFILE_WAVE_CINATUR,
548
+ MOLFILE_WAVE_PIPEK, MOLFILE_WAVE_BOYS, MOLFILE_WAVE_RUEDEN,
549
+ MOLFILE_WAVE_NAO, MOLFILE_WAVE_PNAO, MOLFILE_WAVE_NHO,
550
+ MOLFILE_WAVE_PNHO, MOLFILE_WAVE_NBO, MOLFILE_WAVE_PNBO,
551
+ MOLFILE_WAVE_PNLMO, MOLFILE_WAVE_NLMO, MOLFILE_WAVE_MOAO,
552
+ MOLFILE_WAVE_NATO, MOLFILE_WAVE_UNKNOWN
553
+ };
554
+
555
+
556
+ /**
557
+ * Enumeration of all of the supported QM related charge
558
+ * types
559
+ */
560
+ enum molfile_qm_charge_type {
561
+ MOLFILE_QMCHARGE_UNKNOWN,
562
+ MOLFILE_QMCHARGE_MULLIKEN, MOLFILE_QMCHARGE_LOWDIN,
563
+ MOLFILE_QMCHARGE_ESP, MOLFILE_QMCHARGE_NPA
564
+ };
565
+
566
+
567
+
568
+ /**
569
+ * Sizes of various QM-related, per-timestep data arrays
570
+ * which must be allocated by the caller (VMD) so that the plugin
571
+ * can fill in the arrays with data.
572
+ */
573
+ typedef struct molfile_qm_timestep_metadata {
574
+ unsigned int count; /**< total # timesteps; -1 if unknown */
575
+ unsigned int avg_bytes_per_timestep; /**< bytes per timestep */
576
+ int has_gradient; /**< if timestep contains gradient */
577
+ int num_scfiter; /**< # scf iterations for this ts */
578
+ int num_orbitals_per_wavef[MOLFILE_MAXWAVEPERTS]; /**< # orbitals for each wavefunction */
579
+ int has_orben_per_wavef[MOLFILE_MAXWAVEPERTS]; /**< orbital energy flags */
580
+ int has_occup_per_wavef[MOLFILE_MAXWAVEPERTS]; /**< orbital occupancy flags */
581
+ int num_wavef ; /**< # wavefunctions in this ts */
582
+ int wavef_size; /**< size of one wavefunction
583
+ * (# of gaussian basis fctns) */
584
+ int num_charge_sets; /**< # of charge values per atom */
585
+ } molfile_qm_timestep_metadata_t;
586
+
587
+
588
+ /**
589
+ * QM wavefunction
590
+ */
591
+ typedef struct {
592
+ int type; /**< MOLFILE_WAVE_CANON, MOLFILE_WAVE_MCSCFNAT, ... */
593
+ int spin; /**< 1 for alpha, -1 for beta */
594
+ int excitation; /**< 0 for ground state, 1,2,3,... for excited states */
595
+ int multiplicity; /**< spin multiplicity of the state, zero if unknown */
596
+ char info[MOLFILE_BUFSIZ]; /**< string for additional type info */
597
+
598
+ double energy; /**< energy of the electronic state.
599
+ * i.e. HF-SCF energy, CI state energy,
600
+ * MCSCF energy, etc. */
601
+
602
+ float *wave_coeffs; /**< expansion coefficients for wavefunction in the
603
+ * form {orbital1(c1),orbital1(c2),.....,orbitalM(cN)} */
604
+ float *orbital_energies; /**< list of orbital energies for wavefunction */
605
+ float *occupancies; /**< orbital occupancies */
606
+ int *orbital_ids; /**< orbital ID numbers; If NULL then VMD will
607
+ * assume 1,2,3,...num_orbs. */
608
+ } molfile_qm_wavefunction_t;
609
+
610
+
611
+ /**
612
+ * QM per trajectory timestep info
613
+ * Note that each timestep can contain multiple wavefunctions.
614
+ */
615
+ typedef struct {
616
+ molfile_qm_wavefunction_t *wave; /**< array of wavefunction objects */
617
+ float *gradient; /**< force on each atom (=gradient of energy) */
618
+
619
+ double *scfenergies; /**< energies from the SCF cycles */
620
+ double *charges; /**< per-atom charges */
621
+ int *charge_types; /**< type of each charge set */
622
+ } molfile_qm_timestep_t;
623
+
624
+
625
+ /**************************************************************
626
+ **************************************************************/
627
+
628
+
629
+
630
+
631
+ /**
632
+ * Enumeration of all of the supported graphics objects that can be read
633
+ * from graphics file reader plugins.
634
+ */
635
+ enum molfile_graphics_type {
636
+ MOLFILE_POINT, MOLFILE_TRIANGLE, MOLFILE_TRINORM, MOLFILE_NORMS,
637
+ MOLFILE_LINE, MOLFILE_CYLINDER, MOLFILE_CAPCYL, MOLFILE_CONE,
638
+ MOLFILE_SPHERE, MOLFILE_TEXT, MOLFILE_COLOR, MOLFILE_TRICOLOR
639
+ };
640
+
641
+ /**
642
+ * Individual graphics object/element data
643
+ */
644
+ typedef struct {
645
+ int type; /* One of molfile_graphics_type */
646
+ int style; /* A general style parameter */
647
+ float size; /* A general size parameter */
648
+ float data[9]; /* All data for the element */
649
+ } molfile_graphics_t;
650
+
651
+
652
+ /*
653
+ * Types for raw graphics elements stored in files. Data for each type
654
+ * should be stored by the plugin as follows:
655
+
656
+ type data style size
657
+ ---- ---- ----- ----
658
+ point x, y, z pixel size
659
+ triangle x1,y1,z1,x2,y2,z2,x3,y3,z3
660
+ trinorm x1,y1,z1,x2,y2,z2,x3,y3,z3
661
+ the next array element must be NORMS
662
+ tricolor x1,y1,z1,x2,y2,z2,x3,y3,z3
663
+ the next array elements must be NORMS
664
+ the following element must be COLOR, with three RGB triples
665
+ norms x1,y1,z1,x2,y2,z2,x3,y3,z3
666
+ line x1,y1,z1,x2,y2,z2 0=solid pixel width
667
+ 1=stippled
668
+ cylinder x1,y1,z1,x2,y2,z2 resolution radius
669
+ capcyl x1,y1,z1,x2,y2,z2 resolution radius
670
+ sphere x1,y1,z1 resolution radius
671
+ text x, y, z, up to 24 bytes of text pixel size
672
+ color r, g, b
673
+ */
674
+
675
+
676
+ /**
677
+ * Main file reader API. Any function in this struct may be NULL
678
+ * if not implemented by the plugin; the application checks this to determine
679
+ * what functionality is present in the plugin.
680
+ */
681
+ typedef struct {
682
+ /**
683
+ * Required header
684
+ */
685
+ vmdplugin_HEAD
686
+
687
+ /**
688
+ * Filename extension for this file type. May be NULL if no filename
689
+ * extension exists and/or is known. For file types that match several
690
+ * common extensions, list them in a comma separated list such as:
691
+ * "pdb,ent,foo,bar,baz,ban"
692
+ * The comma separated list will be expanded when filename extension matching
693
+ * is performed. If multiple plugins solicit the same filename extensions,
694
+ * the one that lists the extension earliest in its list is selected. In the
695
+ * case of a "tie", the first one tried/checked "wins".
696
+ */
697
+ const char *filename_extension;
698
+
699
+ /**
700
+ * Try to open the file for reading. Return an opaque handle, or NULL on
701
+ * failure. Set the number of atoms; if the number of atoms cannot be
702
+ * determined, set natoms to MOLFILE_NUMATOMS_UNKNOWN.
703
+ * Filetype should be the name under which this plugin was registered;
704
+ * this is provided so that plugins can provide the same function pointer
705
+ * to handle multiple file types.
706
+ */
707
+ void *(* open_file_read)(const char *filepath, const char *filetype,
708
+ int *natoms);
709
+
710
+ /**
711
+ * Read molecular structure from the given file handle. atoms is allocated
712
+ * by the caller and points to space for natoms.
713
+ * On success, place atom information in the passed-in pointer.
714
+ * optflags specifies which optional fields in the atoms will be set by
715
+ * the plugin.
716
+ */
717
+ int (*read_structure)(void *, int *optflags, molfile_atom_t *atoms);
718
+
719
+ /**
720
+ * Read bond information for the molecule. On success the arrays from
721
+ * and to should point to the (one-based) indices of bonded atoms.
722
+ * Each unique bond should be specified only once, so file formats that list
723
+ * bonds twice will need post-processing before the results are returned to
724
+ * the caller.
725
+ * If the plugin provides bond information, but the file loaded doesn't
726
+ * actually contain any bond info, the nbonds parameter should be
727
+ * set to 0 and from/to should be set to NULL to indicate that no bond
728
+ * information was actually present, and automatic bond search should be
729
+ * performed.
730
+ *
731
+ * If the plugin provides bond order information, the bondorder array
732
+ * will contain the bond order for each from/to pair. If not, the bondorder
733
+ * pointer should be set to NULL, in which case the caller will provide a
734
+ * default bond order value of 1.0.
735
+ *
736
+ * If the plugin provides bond type information, the bondtype array
737
+ * will contain the bond type index for each from/to pair. These numbers
738
+ * are consecutive integers starting from 0.
739
+ * the bondtypenames list, contains the corresponding names, if available,
740
+ * as a NULL string terminated list. nbondtypes is provided for convenience
741
+ * and consistency checking.
742
+ *
743
+ * These arrays must be freed by the plugin in the close_file_read function.
744
+ * This function can be called only after read_structure().
745
+ * Return MOLFILE_SUCCESS if no errors occur.
746
+ */
747
+ int (*read_bonds)(void *, int *nbonds, int **from, int **to, float **bondorder,
748
+ int **bondtype, int *nbondtypes, char ***bondtypename);
749
+
750
+ /**
751
+ * XXX this function will be augmented and possibly superseded by a
752
+ * new QM-capable version named read_timestep(), when finished.
753
+ *
754
+ * Read the next timestep from the file. Return MOLFILE_SUCCESS, or
755
+ * MOLFILE_EOF on EOF. If the molfile_timestep_t argument is NULL, then
756
+ * the frame should be skipped. Otherwise, the application must prepare
757
+ * molfile_timestep_t by allocating space in coords for the corresponding
758
+ * number of coordinates.
759
+ * The natoms parameter exists because some coordinate file formats
760
+ * (like CRD) cannot determine for themselves how many atoms are in a
761
+ * timestep; the app must therefore obtain this information elsewhere
762
+ * and provide it to the plugin.
763
+ */
764
+ int (* read_next_timestep)(void *, int natoms, molfile_timestep_t *);
765
+
766
+ /**
767
+ * Close the file and release all data. The handle cannot be reused.
768
+ */
769
+ void (* close_file_read)(void *);
770
+
771
+ /**
772
+ * Open a coordinate file for writing using the given header information.
773
+ * Return an opaque handle, or NULL on failure. The application must
774
+ * specify the number of atoms to be written.
775
+ * filetype should be the name under which this plugin was registered.
776
+ */
777
+ void *(* open_file_write)(const char *filepath, const char *filetype,
778
+ int natoms);
779
+
780
+ /**
781
+ * Write structure information. Return success.
782
+ */
783
+ int (* write_structure)(void *, int optflags, const molfile_atom_t *atoms);
784
+
785
+ /**
786
+ * Write a timestep to the coordinate file. Return MOLFILE_SUCCESS if no
787
+ * errors occur. If the file contains structure information in each
788
+ * timestep (like a multi-entry PDB), it will have to cache the information
789
+ * from the initial calls from write_structure.
790
+ */
791
+ int (* write_timestep)(void *, const molfile_timestep_t *);
792
+
793
+ /**
794
+ * Close the file and release all data. The handle cannot be reused.
795
+ */
796
+ void (* close_file_write)(void *);
797
+
798
+ /**
799
+ * Retrieve metadata pertaining to volumetric datasets in this file.
800
+ * Set nsets to the number of volumetric data sets, and set *metadata
801
+ * to point to an array of molfile_volumetric_t. The array is owned by
802
+ * the plugin and should be freed by close_file_read(). The application
803
+ * may call this function any number of times.
804
+ */
805
+ int (* read_volumetric_metadata)(void *, int *nsets,
806
+ molfile_volumetric_t **metadata);
807
+
808
+ /**
809
+ * Read the specified volumetric data set into the space pointed to by
810
+ * datablock. The set is specified with a zero-based index. The space
811
+ * allocated for the datablock must be equal to
812
+ * xsize * ysize * zsize. No space will be allocated for colorblock
813
+ * unless has_color is nonzero; in that case, colorblock should be
814
+ * filled in with three RGB floats per datapoint.
815
+ */
816
+ int (* read_volumetric_data)(void *, int set, float *datablock,
817
+ float *colorblock);
818
+ #if vmdplugin_ABIVERSION > 16
819
+ int (* read_volumetric_data_ex)(void *, molfile_volumetric_readwrite_t *v);
820
+ #endif
821
+
822
+ /**
823
+ * Read raw graphics data stored in this file. Return the number of data
824
+ * elements and the data itself as an array of molfile_graphics_t in the
825
+ * pointer provided by the application. The plugin is responsible for
826
+ * freeing the data when the file is closed.
827
+ */
828
+ int (* read_rawgraphics)(void *, int *nelem, const molfile_graphics_t **data);
829
+
830
+ /**
831
+ * Read molecule metadata such as what database (if any) this file/data
832
+ * came from, what the accession code for the database is, textual remarks
833
+ * and other notes pertaining to the contained structure/trajectory/volume
834
+ * and anything else that's informative at the whole file level.
835
+ */
836
+ int (* read_molecule_metadata)(void *, molfile_metadata_t **metadata);
837
+
838
+ /**
839
+ * Write bond information for the molecule. The arrays from
840
+ * and to point to the (one-based) indices of bonded atoms.
841
+ * Each unique bond will be specified only once by the caller.
842
+ * File formats that list bonds twice will need to emit both the
843
+ * from/to and to/from versions of each.
844
+ * This function must be called before write_structure().
845
+ *
846
+ * Like the read_bonds() routine, the bondorder pointer is set to NULL
847
+ * if the caller doesn't have such information, in which case the
848
+ * plugin should assume a bond order of 1.0 if the file format requires
849
+ * bond order information.
850
+ *
851
+ * Support for bond types follows the bondorder rules. bondtype is
852
+ * an integer array of the size nbonds that contains the bond type
853
+ * index (consecutive integers starting from 0) and bondtypenames
854
+ * contain the corresponding strings, in case the naming/numbering
855
+ * scheme is different from the index numbers.
856
+ * if the pointers are set to NULL, then this information is not available.
857
+ * bondtypenames can only be used of bondtypes is also given.
858
+ * Return MOLFILE_SUCCESS if no errors occur.
859
+ */
860
+ int (* write_bonds)(void *, int nbonds, int *from, int *to, float *bondorder,
861
+ int *bondtype, int nbondtypes, char **bondtypename);
862
+
863
+ /**
864
+ * Write the specified volumetric data set into the space pointed to by
865
+ * datablock. The * allocated for the datablock must be equal to
866
+ * xsize * ysize * zsize. No space will be allocated for colorblock
867
+ * unless has_color is nonzero; in that case, colorblock should be
868
+ * filled in with three RGB floats per datapoint.
869
+ */
870
+ int (* write_volumetric_data)(void *, molfile_volumetric_t *metadata,
871
+ float *datablock, float *colorblock);
872
+ #if vmdplugin_ABIVERSION > 16
873
+ int (* write_volumetric_data_ex)(void *, molfile_volumetric_t *metadata,
874
+ molfile_volumetric_readwrite_t *v);
875
+ #endif
876
+
877
+ /**
878
+ * Read in Angles, Dihedrals, Impropers, and Cross Terms and optionally types.
879
+ * (Cross terms pertain to the CHARMM/NAMD CMAP feature)
880
+ */
881
+ int (* read_angles)(void *handle, int *numangles, int **angles, int **angletypes,
882
+ int *numangletypes, char ***angletypenames, int *numdihedrals,
883
+ int **dihedrals, int **dihedraltypes, int *numdihedraltypes,
884
+ char ***dihedraltypenames, int *numimpropers, int **impropers,
885
+ int **impropertypes, int *numimpropertypes, char ***impropertypenames,
886
+ int *numcterms, int **cterms, int *ctermcols, int *ctermrows);
887
+
888
+ /**
889
+ * Write out Angles, Dihedrals, Impropers, and Cross Terms
890
+ * (Cross terms pertain to the CHARMM/NAMD CMAP feature)
891
+ */
892
+ int (* write_angles)(void *handle, int numangles, const int *angles, const int *angletypes,
893
+ int numangletypes, const char **angletypenames, int numdihedrals,
894
+ const int *dihedrals, const int *dihedraltypes, int numdihedraltypes,
895
+ const char **dihedraltypenames, int numimpropers,
896
+ const int *impropers, const int *impropertypes, int numimpropertypes,
897
+ const char **impropertypenames, int numcterms, const int *cterms,
898
+ int ctermcols, int ctermrows);
899
+
900
+
901
+ /**
902
+ * Retrieve metadata pertaining to timestep independent
903
+ * QM datasets in this file.
904
+ *
905
+ * The metadata are the sizes of the QM related data structure
906
+ * arrays that will be populated by the plugin when
907
+ * read_qm_rundata() is called. Since the allocation of these
908
+ * arrays is done by VMD rather than the plugin, VMD needs to
909
+ * know the sizes beforehand. Consequently read_qm_metadata()
910
+ * has to be called before read_qm_rundata().
911
+ */
912
+ int (* read_qm_metadata)(void *, molfile_qm_metadata_t *metadata);
913
+
914
+
915
+ /**
916
+ * Read timestep independent QM data.
917
+ *
918
+ * Typical data that are defined only once per trajectory are
919
+ * general info about the calculation (such as the used method),
920
+ * the basis set and normal modes.
921
+ * The data structures to be populated must have been allocated
922
+ * before by VMD according to sizes obtained through
923
+ * read_qm_metadata().
924
+ */
925
+ int (* read_qm_rundata)(void *, molfile_qm_t *qmdata);
926
+
927
+
928
+ /**
929
+ * Query the molfile plugin to determine whether or not memory
930
+ * allocations used for atomic coordinates and PBC unit cell information
931
+ * need to be aligned to a particular virtual memory or filesystem
932
+ * page size boundary to facilitate kernel-bypass unbuffered I/O,
933
+ * e.g., as used by jsplugin. This API should be called prior to the
934
+ * first call to read a timestep. The required page alignment size
935
+ * (in bytes) is returned to the caller. If this API has not been
936
+ * called, then the molfile plugin should revert to standard
937
+ * kernel-buffered I/O and suffer the associated performance loss.
938
+ * The caller can be assured that the plugin will not request any
939
+ * page alignment size that is greater than the value of
940
+ * MOLFILE_DIRECTIO_MAX_BLOCK_SIZE, both as a runtime sanity check,
941
+ * and to ensure that a caller that is unable to perform the max
942
+ * aligned allocation doesn't call the API in the first place.
943
+ * If a page-aligned allocation is not required for the file being read,
944
+ * the plugin will return an alignment size of 1.
945
+ */
946
+ #if vmdplugin_ABIVERSION > 17
947
+ int (* read_timestep_pagealign_size)(void *, int *pagealignsize);
948
+ #endif
949
+
950
+
951
+ /**
952
+ * Read the next timestep from the file. Return MOLFILE_SUCCESS, or
953
+ * MOLFILE_EOF on EOF. If the molfile_timestep_t or molfile_qm_metadata_t
954
+ * arguments are NULL, then the coordinate or qm data should be skipped.
955
+ * Otherwise, the application must prepare molfile_timestep_t and
956
+ * molfile_qm_timestep_t by allocating space for the corresponding
957
+ * number of coordinates, orbital wavefunction coefficients, etc.
958
+ * Since it is common for users to want to load only the final timestep
959
+ * data from a QM run, the application may provide any combination of
960
+ * valid, or NULL pointers for the molfile_timestep_t and
961
+ * molfile_qm_timestep_t parameters, depending on what information the
962
+ * user is interested in.
963
+ * The natoms and qm metadata parameters exist because some file formats
964
+ * cannot determine for themselves how many atoms etc are in a
965
+ * timestep; the app must therefore obtain this information elsewhere
966
+ * and provide it to the plugin.
967
+ */
968
+ int (* read_timestep)(void *, int natoms, molfile_timestep_t *,
969
+ molfile_qm_metadata_t *, molfile_qm_timestep_t *);
970
+
971
+ int (* read_timestep_metadata)(void *, molfile_timestep_metadata_t *);
972
+ int (* read_qm_timestep_metadata)(void *, molfile_qm_timestep_metadata_t *);
973
+
974
+
975
+ #if defined(EXPERIMENTAL_DIRECTIO_APIS)
976
+ /**
977
+ * Calculate file offsets and I/O lengths for performing
978
+ * kernel-bypass direct I/O or using GPU-Direct Storage APIs,
979
+ * thereby enabling peak I/O rates to be achieved for analysis
980
+ * worksloads like clustering of trajectories.
981
+ */
982
+ int (* calc_fileoffsets_timestep)(void *,
983
+ molfile_ssize_t frameindex,
984
+ int firstatom,
985
+ int lastatom,
986
+ int *firstatom,
987
+ int *pageoffset,
988
+ molfile_ssize_t *startoffset,
989
+ molfile_ssize_t *readlen);
990
+ #endif
991
+
992
+
993
+ #if defined(DESRES_READ_TIMESTEP2)
994
+ /**
995
+ * Read a specified timestep!
996
+ */
997
+ int (* read_timestep2)(void *, molfile_ssize_t index, molfile_timestep_t *);
998
+
999
+ /**
1000
+ * write up to count times beginning at index start into the given
1001
+ * space. Return the number read, or -1 on error.
1002
+ */
1003
+ molfile_ssize_t (* read_times)( void *,
1004
+ molfile_ssize_t start,
1005
+ molfile_ssize_t count,
1006
+ double * times );
1007
+ #endif
1008
+
1009
+ /**
1010
+ * Console output, READ-ONLY function pointer.
1011
+ * Function pointer that plugins can use for printing to the host
1012
+ * application's text console. This provides a clean way for plugins
1013
+ * to send message strings back to the calling application, giving the
1014
+ * caller the ability to prioritize, buffer, and redirect console messages
1015
+ * to an appropriate output channel, window, etc. This enables the use of
1016
+ * graphical consoles like TkCon without losing console output from plugins.
1017
+ * If the function pointer is NULL, no console output service is provided
1018
+ * by the calling application, and the output should default to stdout
1019
+ * stream. If the function pointer is non-NULL, all output will be
1020
+ * subsequently dealt with by the calling application.
1021
+ *
1022
+ * XXX this should really be put into a separate block of
1023
+ * application-provided read-only function pointers for any
1024
+ * application-provided services
1025
+ */
1026
+ int (* cons_fputs)(const int, const char*);
1027
+
1028
+ } molfile_plugin_t;
1029
+
1030
+ }
1031
+ }
1032
+ #endif
1033
+
1034
+ #endif