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,535 @@
1
+ !
2
+ ! Copyright (C) 2001-2022 Quantum ESPRESSO group
3
+ ! This file is distributed under the terms of the
4
+ ! GNU General Public License. See the file `License'
5
+ ! in the root directory of the present distribution,
6
+ ! or http://www.gnu.org/copyleft/gpl.txt .
7
+ !
8
+ !----------------------------------------------------------------------------
9
+ SUBROUTINE forces()
10
+ !----------------------------------------------------------------------------
11
+ !! This routine is a driver routine which computes the forces
12
+ !! acting on the atoms. The complete expression of the forces
13
+ !! contains many parts which are computed by different routines:
14
+ !
15
+ !! - force_lc: local potential contribution
16
+ !! - force_us: non-local potential contribution
17
+ !! - (esm_)force_ew: (ESM) electrostatic ewald term
18
+ !! - force_cc: nonlinear core correction contribution
19
+ !! - force_corr: correction term for incomplete self-consistency
20
+ !! - force_hub: contribution due to the Hubbard term;
21
+ !! - force_london: Grimme DFT+D dispersion forces
22
+ !! - force_d3: Grimme-D3 (DFT-D3) dispersion forces
23
+ !! - force_xdm: XDM dispersion forces
24
+ !! - more terms from external electric fields, Martyna-Tuckerman, etc.
25
+ !! - force_sol: contribution due to 3D-RISM
26
+ !
27
+ USE kinds, ONLY : DP
28
+ USE io_global, ONLY : stdout
29
+ USE cell_base, ONLY : at, bg, alat, omega
30
+ USE ions_base, ONLY : nat, ntyp => nsp,nsp, ityp, tau, zv, amass, extfor, atm
31
+ USE gvect, ONLY : ngm, gstart, ngl, igtongl, g, gg, gcutm
32
+ USE lsda_mod, ONLY : nspin
33
+ USE symme, ONLY : symvector
34
+ USE vlocal, ONLY : strf, vloc
35
+ USE force_mod, ONLY : force, sumfor
36
+ USE scf, ONLY : rho
37
+ USE ions_base, ONLY : if_pos
38
+ USE ldaU, ONLY : lda_plus_u, Hubbard_projectors
39
+ USE extfield, ONLY : tefield, forcefield, gate, forcegate, relaxz
40
+ USE control_flags, ONLY : gamma_only, remove_rigid_rot, textfor, &
41
+ iverbosity, llondon, ldftd3, lxdm, ts_vdw, &
42
+ mbd_vdw, lforce => tprnfor, istep
43
+ USE bp, ONLY : lelfield, gdir, l3dstring, efield_cart, &
44
+ efield_cry,efield
45
+ USE uspp, ONLY : okvan
46
+ USE martyna_tuckerman, ONLY : do_comp_mt, wg_corr_force
47
+ USE london_module, ONLY : force_london
48
+ USE dftd3_api, ONLY : get_atomic_number
49
+ USE dftd3_qe, ONLY : dftd3_pbc_gdisp, dftd3
50
+
51
+ USE xdm_module, ONLY : force_xdm
52
+ USE tsvdw_module, ONLY : FtsvdW
53
+ USE libmbd_interface, ONLY : FmbdvdW
54
+ USE esm, ONLY : do_comp_esm, esm_bc, esm_force_ew
55
+ USE qmmm, ONLY : qmmm_mode
56
+ USE rism_module, ONLY : lrism, force_rism
57
+ USE extffield, ONLY : apply_extffield_PW
58
+ USE input_parameters, ONLY : nextffield
59
+ !
60
+ #if defined(__CUDA)
61
+ USE device_fbuff_m, ONLY : dev_buf
62
+ #endif
63
+ !
64
+ #if defined (__ENVIRON)
65
+ USE plugin_flags, ONLY : use_environ
66
+ USE environ_base_module, ONLY : calc_environ_force
67
+ USE environ_pw_module, ONLY : is_ms_gcs, run_ms_gcs
68
+ #endif
69
+ #if defined (__OSCDFT)
70
+ USE plugin_flags, ONLY : use_oscdft
71
+ USE oscdft_base, ONLY : oscdft_ctx
72
+ USE oscdft_forces_subs, ONLY : oscdft_apply_forces, oscdft_print_forces
73
+ #endif
74
+ #if defined(__LEGACY_PLUGINS)
75
+ USE plugin_flags, ONLY : plugin_ext_forces, plugin_int_forces
76
+ #endif
77
+ !
78
+ IMPLICIT NONE
79
+ !
80
+ REAL(DP), ALLOCATABLE :: forcenl(:,:), &
81
+ forcelc(:,:), &
82
+ forcecc(:,:), &
83
+ forceion(:,:), &
84
+ force_disp(:,:), &
85
+ force_d3(:,:), &
86
+ force_disp_xdm(:,:), &
87
+ force_mt(:,:), &
88
+ forcescc(:,:), &
89
+ forces_bp_efield(:,:),&
90
+ forceh(:,:), &
91
+ force_sol(:,:)
92
+ ! nonlocal, local, core-correction, ewald, scf correction terms, and hubbard
93
+ !
94
+ ! aux is used to store a possible additional density
95
+ ! now defined in real space
96
+ !
97
+ COMPLEX(DP), ALLOCATABLE :: auxg(:), auxr(:)
98
+ !
99
+ REAL(DP) :: sumscf, sum_mm
100
+ REAL(DP), PARAMETER :: eps = 1.e-12_dp
101
+ INTEGER :: ipol, na
102
+ ! counter on polarization
103
+ ! counter on atoms
104
+ !
105
+ REAL(DP) :: latvecs(3,3)
106
+ INTEGER :: atnum(1:nat)
107
+ REAL(DP) :: stress_dftd3(3,3)
108
+ !
109
+ INTEGER :: ierr
110
+ !
111
+ force(:,:) = 0.D0
112
+ !
113
+ ! Early return if all forces to be set to zero
114
+ !
115
+ IF ( ALL( if_pos == 0 ) ) RETURN
116
+ !
117
+ CALL start_clock( 'forces' )
118
+ #if defined(__CUDA)
119
+ ! Cleanup scratch space used in previous SCF iterations.
120
+ ! This will reduce memory footprint.
121
+ CALL dev_buf%reinit(ierr)
122
+ IF (ierr .ne. 0) CALL infomsg('forces', 'Cannot reset GPU buffers! Some buffers still locked.')
123
+ #endif
124
+ !
125
+ !
126
+ ALLOCATE( forcenl(3,nat), forcelc(3,nat), forcecc(3,nat), &
127
+ forceh(3,nat), forceion(3,nat), forcescc(3,nat) )
128
+ !
129
+ forcescc(:,:) = 0.D0
130
+ forceh(:,:) = 0.D0
131
+ !
132
+ ! ... The nonlocal contribution is computed here
133
+ !
134
+ call start_clock('frc_us')
135
+ CALL force_us( forcenl )
136
+ call stop_clock('frc_us')
137
+ !
138
+ ! ... The local contribution
139
+ !
140
+ call start_clock('frc_lc')
141
+ CALL force_lc( nat, tau, ityp, ntyp, alat, omega, ngm, ngl, igtongl, &
142
+ g, rho%of_r(:,1), gstart, gamma_only, vloc, forcelc )
143
+ call stop_clock('frc_lc')
144
+ !
145
+ ! ... The NLCC contribution
146
+ !
147
+ call start_clock('frc_cc')
148
+ CALL force_cc( forcecc )
149
+ call stop_clock('frc_cc')
150
+
151
+ ! ... The Hubbard contribution
152
+ ! (included by force_us if using beta as local projectors)
153
+ !
154
+ IF ( lda_plus_u .AND. Hubbard_projectors.NE.'pseudo' ) CALL force_hub( forceh )
155
+ !
156
+ ! ... The ionic contribution is computed here
157
+ !
158
+ IF( do_comp_esm ) THEN
159
+ CALL esm_force_ew( forceion )
160
+ ELSE
161
+ CALL force_ew( alat, nat, ntyp, ityp, zv, at, bg, tau, omega, g, &
162
+ gg, ngm, gstart, gamma_only, gcutm, strf, forceion )
163
+ ENDIF
164
+ !
165
+ ! ... the semi-empirical dispersion correction
166
+ !
167
+ IF ( llondon ) THEN
168
+ !
169
+ ALLOCATE( force_disp(3,nat) )
170
+ force_disp(:,:) = 0.0_DP
171
+ force_disp = force_london( alat , nat , ityp , at , bg , tau )
172
+ !
173
+ ENDIF
174
+ !
175
+ ! ... The Grimme-D3 dispersion correction
176
+ !
177
+ IF ( ldftd3 ) THEN
178
+ !
179
+ CALL start_clock('force_dftd3')
180
+ ALLOCATE( force_d3(3, nat) )
181
+ force_d3(:,:) = 0.0_DP
182
+ latvecs(:,:) = at(:,:)*alat
183
+ tau(:,:) = tau(:,:)*alat
184
+ atnum(:) = get_atomic_number(atm(ityp(:)))
185
+ CALL dftd3_pbc_gdisp( dftd3, tau, atnum, latvecs, &
186
+ force_d3, stress_dftd3 )
187
+ force_d3 = -2.d0*force_d3
188
+ tau(:,:) = tau(:,:)/alat
189
+ CALL stop_clock('force_dftd3')
190
+ ENDIF
191
+ !
192
+ !
193
+ IF (lxdm) THEN
194
+ ALLOCATE( force_disp_xdm(3,nat) )
195
+ force_disp_xdm = 0._dp
196
+ force_disp_xdm = force_xdm(nat)
197
+ ENDIF
198
+ !
199
+ ! ... The SCF contribution
200
+ !
201
+ call start_clock('frc_scc')
202
+ #if defined(__CUDA)
203
+ ! Cleanup scratch space again, next subroutines uses a lot of memory.
204
+ ! In an ideal world this should be done only if really needed (TODO).
205
+ CALL dev_buf%reinit(ierr)
206
+ IF (ierr .ne. 0) CALL errore('forces', 'Cannot reset GPU buffers! Buffers still locked: ', abs(ierr))
207
+ #endif
208
+ !
209
+ CALL force_corr( forcescc )
210
+ call stop_clock('frc_scc')
211
+ !
212
+ IF (do_comp_mt) THEN
213
+ !
214
+ ALLOCATE( force_mt(3,nat) )
215
+ CALL wg_corr_force( .TRUE., omega, nat, ntyp, ityp, ngm, g, tau, zv, strf, &
216
+ rho%of_g(:,1), force_mt )
217
+ ENDIF
218
+ !
219
+ ! ... The solvation contribution (3D-RISM)
220
+ !
221
+ IF (lrism) THEN
222
+ ALLOCATE ( force_sol ( 3 , nat ) )
223
+ CALL force_rism( force_sol )
224
+ END IF
225
+ !
226
+ ! ... call void routine for user define/ plugin patches on internal forces
227
+ !
228
+ #if defined(__LEGACY_PLUGINS)
229
+ CALL plugin_int_forces()
230
+ #endif
231
+ #if defined (__ENVIRON)
232
+ IF (use_environ) CALL calc_environ_force(force)
233
+ #endif
234
+ #if defined (__OSCDFT)
235
+ IF (use_oscdft) CALL oscdft_apply_forces(oscdft_ctx)
236
+ #endif
237
+ !
238
+ ! ... Berry's phase electric field terms
239
+ !
240
+ IF (lelfield) THEN
241
+ ALLOCATE( forces_bp_efield(3,nat) )
242
+ forces_bp_efield(:,:) = 0.d0
243
+ IF (.NOT.l3dstring) THEN
244
+ IF (okvan) CALL forces_us_efield( forces_bp_efield, gdir, efield )
245
+ CALL forces_ion_efield( forces_bp_efield, gdir, efield )
246
+ ELSE
247
+ IF (okvan) THEN
248
+ DO ipol = 1, 3
249
+ CALL forces_us_efield( forces_bp_efield, ipol, efield_cry(ipol) )
250
+ ENDDO
251
+ ENDIF
252
+ DO ipol = 1, 3
253
+ CALL forces_ion_efield( forces_bp_efield, ipol, efield_cart(ipol) )
254
+ ENDDO
255
+ ENDIF
256
+ ENDIF
257
+ !
258
+ ! ... here we sum all the contributions and compute the total force acting
259
+ ! ... on the crystal
260
+ !
261
+ DO ipol = 1, 3
262
+ !
263
+ sumfor = 0.D0
264
+ !
265
+ DO na = 1, nat
266
+ !
267
+ force(ipol,na) = force(ipol,na) + &
268
+ forcenl(ipol,na) + &
269
+ forceion(ipol,na) + &
270
+ forcelc(ipol,na) + &
271
+ forcecc(ipol,na) + &
272
+ forceh(ipol,na) + &
273
+ forcescc(ipol,na)
274
+ !
275
+ IF ( llondon ) force(ipol,na) = force(ipol,na) + force_disp(ipol,na)
276
+ IF ( ldftd3 ) force(ipol,na) = force(ipol,na) + force_d3(ipol,na)
277
+ IF ( lxdm ) force(ipol,na) = force(ipol,na) + force_disp_xdm(ipol,na)
278
+ ! factor 2 converts from Ha to Ry a.u.
279
+ ! the IF condition is to avoid double counting
280
+ IF ( mbd_vdw ) THEN
281
+ force(ipol, na) = force(ipol, na) + 2.0_dp*FmbdvdW(ipol, na)
282
+ ELSE IF ( ts_vdw ) THEN
283
+ force(ipol, na) = force(ipol, na) + 2.0_dp*FtsvdW(ipol, na)
284
+ ENDIF
285
+ IF ( tefield ) force(ipol,na) = force(ipol,na) + forcefield(ipol,na)
286
+ IF ( gate ) force(ipol,na) = force(ipol,na) + forcegate(ipol,na) ! TB
287
+ IF (lelfield) force(ipol,na) = force(ipol,na) + forces_bp_efield(ipol,na)
288
+ IF (do_comp_mt) force(ipol,na) = force(ipol,na) + force_mt(ipol,na)
289
+ IF ( lrism ) force(ipol,na) = force(ipol,na) + force_sol(ipol,na)
290
+ !
291
+ sumfor = sumfor + force(ipol,na)
292
+ !
293
+ ENDDO
294
+ !
295
+ !TB
296
+ IF ((gate.AND.relaxz).AND.(ipol==3)) WRITE( stdout, '("Total force in z direction = 0 disabled")')
297
+ !
298
+ IF ( (do_comp_esm .AND. ( esm_bc /= 'pbc' )).OR.(gate.AND.relaxz) ) THEN
299
+ !
300
+ ! ... impose total force along xy = 0
301
+ !
302
+ DO na = 1, nat
303
+ IF ( ipol /= 3) force(ipol,na) = force(ipol,na) &
304
+ - sumfor / DBLE( nat )
305
+ ENDDO
306
+ !
307
+ ELSEIF ( qmmm_mode < 0 ) THEN
308
+ !
309
+ ! ... impose total force = 0 except in a QM-MM calculation
310
+ !
311
+ DO na = 1, nat
312
+ force(ipol,na) = force(ipol,na) - sumfor / DBLE( nat )
313
+ ENDDO
314
+ !
315
+ ENDIF
316
+ !
317
+ ENDDO
318
+ !
319
+ ! ... call run_extffield to apply external force fields on ions
320
+ !
321
+ IF ( nextffield > 0 ) THEN
322
+ tau(:,:) = tau(:,:)*alat
323
+ CALL apply_extffield_PW(istep,nextffield,tau,force)
324
+ tau(:,:) = tau(:,:)/alat
325
+ END IF
326
+ !
327
+ ! ... resymmetrize (should not be needed, but ...)
328
+ !
329
+ CALL symvector( nat, force )
330
+ !
331
+ IF ( remove_rigid_rot ) &
332
+ CALL remove_tot_torque( nat, tau, amass(ityp(:)), force )
333
+ !
334
+ IF( textfor ) force(:,:) = force(:,:) + extfor(:,:)
335
+ !
336
+ ! ... call void routine for user define/ plugin patches on external forces
337
+ !
338
+ #if defined(__LEGACY_PLUGINS)
339
+ CALL plugin_ext_forces()
340
+ #endif
341
+ #if defined (__ENVIRON)
342
+ IF (use_environ) THEN
343
+ IF (is_ms_gcs()) CALL run_ms_gcs()
344
+ END IF
345
+ #endif
346
+ !
347
+ ! ... write on output the forces
348
+ !
349
+ WRITE( stdout, '(/,5x,"Forces acting on atoms (cartesian axes, Ry/au):", / )')
350
+ DO na = 1, nat
351
+ WRITE( stdout, 9035) na, ityp(na), force(:,na)
352
+ ENDDO
353
+ !
354
+ ! ... forces on fixed coordinates are set to zero ( C.S. 15/10/2003 )
355
+ !
356
+ force(:,:) = force(:,:) * DBLE( if_pos )
357
+ forcescc(:,:) = forcescc(:,:) * DBLE( if_pos )
358
+ !
359
+ !civn
360
+ ! IF ( iverbosity > 0 ) THEN
361
+ IF ( .true. ) THEN
362
+ !
363
+ IF ( do_comp_mt ) THEN
364
+ WRITE( stdout, '(5x,"The Martyna-Tuckerman correction term to forces")')
365
+ DO na = 1, nat
366
+ WRITE( stdout, 9035) na, ityp(na), ( force_mt(ipol,na), ipol = 1, 3 )
367
+ ENDDO
368
+ END IF
369
+ !
370
+ WRITE( stdout, '(5x,"The non-local contrib. to forces")')
371
+ DO na = 1, nat
372
+ WRITE( stdout, 9035) na, ityp(na), ( forcenl(ipol,na), ipol = 1, 3 )
373
+ ENDDO
374
+ WRITE( stdout, '(5x,"The ionic contribution to forces")')
375
+ DO na = 1, nat
376
+ WRITE( stdout, 9035) na, ityp(na), ( forceion(ipol,na), ipol = 1, 3 )
377
+ ENDDO
378
+ WRITE( stdout, '(5x,"The local contribution to forces")')
379
+ DO na = 1, nat
380
+ WRITE( stdout, 9035) na, ityp(na), ( forcelc(ipol,na), ipol = 1, 3 )
381
+ ENDDO
382
+ WRITE( stdout, '(5x,"The core correction contribution to forces")')
383
+ DO na = 1, nat
384
+ WRITE( stdout, 9035) na, ityp(na), ( forcecc(ipol,na), ipol = 1, 3 )
385
+ ENDDO
386
+ WRITE( stdout, '(5x,"The Hubbard contrib. to forces")')
387
+ DO na = 1, nat
388
+ WRITE( stdout, 9035) na, ityp(na), ( forceh(ipol,na), ipol = 1, 3 )
389
+ ENDDO
390
+ WRITE( stdout, '(5x,"The SCF correction term to forces")')
391
+ DO na = 1, nat
392
+ WRITE( stdout, 9035) na, ityp(na), ( forcescc(ipol,na), ipol = 1, 3 )
393
+ ENDDO
394
+ !
395
+ IF ( llondon) THEN
396
+ WRITE( stdout, '(/,5x,"Dispersion contribution to forces:")')
397
+ DO na = 1, nat
398
+ WRITE( stdout, 9035) na, ityp(na), (force_disp(ipol,na), ipol = 1, 3)
399
+ ENDDO
400
+ END IF
401
+ !
402
+ IF ( ldftd3 ) THEN
403
+ WRITE( stdout, '(/,5x,"DFT-D3 dispersion contribution to forces:")')
404
+ DO na = 1, nat
405
+ WRITE( stdout, 9035) na, ityp(na), (force_d3(ipol,na), ipol = 1, 3)
406
+ ENDDO
407
+ END IF
408
+ !
409
+ IF (lxdm) THEN
410
+ WRITE( stdout, '(/,5x,"XDM contribution to forces:")')
411
+ DO na = 1, nat
412
+ WRITE( stdout, 9035) na, ityp(na), (force_disp_xdm(ipol,na), ipol = 1, 3)
413
+ ENDDO
414
+ END IF
415
+ !
416
+ ! again, as above, if condition is to avoid redundant printing
417
+ IF ( mbd_vdw ) THEN
418
+ WRITE( stdout, '(/,5x, "MBD contribution to forces")')
419
+ DO na = 1, nat
420
+ WRITE( stdout, 9035) na, ityp(na), (2.0d0*FmbdvdW(ipol, na), ipol = 1, 3)
421
+ ENDDO
422
+ ELSE IF ( ts_vdw ) THEN
423
+ WRITE( stdout, '(/,5x, "TS-VDW contribution to forces")')
424
+ DO na = 1, nat
425
+ WRITE( stdout, 9035) na, ityp(na), (2.0d0*FtsvdW(ipol, na), ipol = 1, 3)
426
+ ENDDO
427
+ ENDIF
428
+
429
+ !
430
+ ! TB gate forces
431
+ IF ( gate ) THEN
432
+ WRITE( stdout, '(/,5x,"Gate contribution to forces:")')
433
+ DO na = 1, nat
434
+ WRITE( stdout, 9035) na, ityp(na), (forcegate(ipol,na), ipol = 1, 3)
435
+ ENDDO
436
+ END IF
437
+ !
438
+ IF ( lrism ) THEN
439
+ WRITE( stdout, '(/,5x,"3D-RISM Solvation contribution to forces:")')
440
+ DO na = 1, nat
441
+ WRITE( stdout, 9035) na, ityp(na), (force_sol(ipol,na), ipol = 1, 3)
442
+ END DO
443
+ END IF
444
+ !
445
+ END IF
446
+ #if defined (__OSCDFT)
447
+ IF (use_oscdft) CALL oscdft_print_forces(oscdft_ctx)
448
+ #endif
449
+ !
450
+ sumfor = 0.D0
451
+ sumscf = 0.D0
452
+ !
453
+ DO na = 1, nat
454
+ !
455
+ sumfor = sumfor + force(1,na)**2 + force(2,na)**2 + force(3,na)**2
456
+ sumscf = sumscf + forcescc(1,na)**2 + forcescc(2,na)**2+ forcescc(3,na)**2
457
+ !
458
+ ENDDO
459
+ !
460
+ sumfor = SQRT( sumfor )
461
+ sumscf = SQRT( sumscf )
462
+ !
463
+ WRITE( stdout, '(/5x,"Total force = ",F12.6,5X, &
464
+ & "Total SCF correction = ",F12.6)') sumfor, sumscf
465
+ !
466
+ IF ( llondon .AND. iverbosity > 0 ) THEN
467
+ !
468
+ sum_mm = 0.D0
469
+ DO na = 1, nat
470
+ sum_mm = sum_mm + &
471
+ force_disp(1,na)**2 + force_disp(2,na)**2 + force_disp(3,na)**2
472
+ ENDDO
473
+ sum_mm = SQRT( sum_mm )
474
+ WRITE ( stdout, '(/,5x, "Total Dispersion Force = ",F12.6)') sum_mm
475
+ !
476
+ END IF
477
+ !
478
+ IF ( ldftd3 .AND. iverbosity > 0 ) THEN
479
+ !
480
+ sum_mm = 0.D0
481
+ DO na = 1, nat
482
+ sum_mm = sum_mm + &
483
+ force_d3(1,na)**2 + force_d3(2,na)**2 + force_d3(3,na)**2
484
+ ENDDO
485
+ sum_mm = SQRT( sum_mm )
486
+ WRITE ( stdout, '(/,5x, "DFT-D3 dispersion Force = ",F12.6)') sum_mm
487
+ !
488
+ END IF
489
+ !
490
+ IF ( lxdm .AND. iverbosity > 0 ) THEN
491
+ !
492
+ sum_mm = 0.D0
493
+ DO na = 1, nat
494
+ sum_mm = sum_mm + &
495
+ force_disp_xdm(1,na)**2 + force_disp_xdm(2,na)**2 + force_disp_xdm(3,na)**2
496
+ ENDDO
497
+ sum_mm = SQRT( sum_mm )
498
+ WRITE ( stdout, '(/,5x, "Total XDM Force = ",F12.6)') sum_mm
499
+ !
500
+ END IF
501
+ !
502
+ IF ( lrism .AND. iverbosity > 0 ) THEN
503
+ !
504
+ sum_mm = 0.D0
505
+ DO na = 1, nat
506
+ sum_mm = sum_mm + &
507
+ force_sol(1,na)**2 + force_sol(2,na)**2 + force_sol(3,na)**2
508
+ END DO
509
+ sum_mm = SQRT( sum_mm )
510
+ WRITE ( stdout, '(/,5x, "Total 3D-RISM Solvation Force = ",F12.6)') sum_mm
511
+ !
512
+ END IF
513
+ !
514
+ DEALLOCATE( forcenl, forcelc, forcecc, forceh, forceion, forcescc )
515
+ IF ( llondon ) DEALLOCATE( force_disp )
516
+ IF ( ldftd3 ) DEALLOCATE( force_d3 )
517
+ IF ( lxdm ) DEALLOCATE( force_disp_xdm )
518
+ IF ( lelfield ) DEALLOCATE( forces_bp_efield )
519
+ IF ( lrism ) DEALLOCATE( force_sol )
520
+ IF(ALLOCATED(force_mt)) DEALLOCATE( force_mt )
521
+ !
522
+ ! FIXME: what is the following line good for?
523
+ !
524
+ lforce = .TRUE.
525
+ !
526
+ CALL stop_clock( 'forces' )
527
+ !
528
+ IF ( ( sumfor < 10.D0*sumscf ) .AND. ( sumfor > nat*eps ) ) &
529
+ WRITE( stdout,'(5x,"SCF correction compared to forces is large: ", &
530
+ & "reduce conv_thr to get better values")')
531
+ RETURN
532
+ !
533
+ 9035 FORMAT(5X,'atom ',I4,' type ',I2,' force = ',3F14.8)
534
+ !
535
+ END SUBROUTINE forces
@@ -0,0 +1,74 @@
1
+ !
2
+ ! Copyright (C) 2001-2009 Quantum ESPRESSO group
3
+ ! This file is distributed under the terms of the
4
+ ! GNU General Public License. See the file `License'
5
+ ! in the root directory of the present distribution,
6
+ ! or http://www.gnu.org/copyleft/gpl.txt .
7
+ !
8
+ !----------------------------------------------------------------------------
9
+ SUBROUTINE plugin_ext_forces()
10
+ !----------------------------------------------------------------------------
11
+ !
12
+ !
13
+ USE mp, ONLY : mp_bcast
14
+ USE mp_images, ONLY : intra_image_comm
15
+ USE io_global, ONLY : stdout, ionode, ionode_id
16
+ USE kinds, ONLY : DP
17
+ !
18
+ USE plugin_flags, ONLY : use_plumed
19
+ !
20
+ USE cell_base, ONLY : alat, at
21
+ USE ions_base, ONLY : tau, nat, amass, ityp
22
+ USE force_mod, ONLY : force,sigma
23
+ USE control_flags, ONLY : istep
24
+ USE ener, ONLY : etot
25
+
26
+ USE plumed_module, ONLY: plumed_f_gcmd
27
+ !
28
+ IMPLICIT NONE
29
+ !
30
+ INTEGER:: i,j,ia
31
+ REAL(DP) :: at_plumed(3,3)
32
+ REAL(DP) :: virial(3,3)
33
+ REAL(DP) :: volume
34
+ REAL(DP), ALLOCATABLE :: tau_plumed(:,:)
35
+ REAL(DP) :: masses_plumed(nat)
36
+ !
37
+ masses_plumed = 0.0_DP
38
+ IF(use_plumed) then
39
+ IF(ionode)THEN
40
+ at_plumed=alat*at; ! the cell, rescaled properly
41
+ allocate(tau_plumed(3,nat))
42
+ tau_plumed=alat*tau
43
+ volume=+at_plumed(1,1)*at_plumed(2,2)*at_plumed(3,3) &
44
+ +at_plumed(1,2)*at_plumed(2,3)*at_plumed(3,1) &
45
+ +at_plumed(1,3)*at_plumed(2,1)*at_plumed(3,2) &
46
+ -at_plumed(1,1)*at_plumed(3,2)*at_plumed(2,3) &
47
+ -at_plumed(1,2)*at_plumed(3,3)*at_plumed(2,1) &
48
+ -at_plumed(1,3)*at_plumed(3,1)*at_plumed(2,2)
49
+ virial=-sigma*volume
50
+
51
+ ! the masses in QE are stored per type, see q-e//Modules/ions_base.f90
52
+ do ia=1,nat
53
+ masses_plumed(ia)=amass(ityp(ia))
54
+ end do
55
+
56
+ CALL plumed_f_gcmd("setStep"//char(0),istep)
57
+ CALL plumed_f_gcmd("setMasses"//char(0),masses_plumed)
58
+ CALL plumed_f_gcmd("setForces"//char(0),force)
59
+ CALL plumed_f_gcmd("setPositions"//char(0),tau_plumed)
60
+ CALL plumed_f_gcmd("setBox"//char(0),at_plumed)
61
+ CALL plumed_f_gcmd("setVirial"//char(0),virial)
62
+ CALL plumed_f_gcmd("setEnergy"//char(0),etot)
63
+ CALL plumed_f_gcmd("calc"//char(0),0)
64
+
65
+ sigma=-virial/volume
66
+
67
+ deallocate(tau_plumed)
68
+ ENDIF
69
+ CALL mp_bcast(force, ionode_id, intra_image_comm)
70
+ CALL mp_bcast(sigma, ionode_id, intra_image_comm)
71
+ ENDIF
72
+ !
73
+ !
74
+ END SUBROUTINE plugin_ext_forces
@@ -0,0 +1,23 @@
1
+ !
2
+ ! Copyright (C) 2001-2009 Quantum ESPRESSO group
3
+ ! This file is distributed under the terms of the
4
+ ! GNU General Public License. See the file `License'
5
+ ! in the root directory of the present distribution,
6
+ ! or http://www.gnu.org/copyleft/gpl.txt .
7
+ !
8
+ !----------------------------------------------------------------------------
9
+ SUBROUTINE plugin_ext_forces()
10
+ !----------------------------------------------------------------------------
11
+ !
12
+ !
13
+ USE mp, ONLY : mp_bcast
14
+ USE mp_images, ONLY : intra_image_comm
15
+ USE io_global, ONLY : stdout, ionode, ionode_id
16
+ USE kinds, ONLY : DP
17
+ !
18
+ USE plugin_flags
19
+ !
20
+ IMPLICIT NONE
21
+ !
22
+ !
23
+ END SUBROUTINE plugin_ext_forces
@@ -0,0 +1,64 @@
1
+ !
2
+ ! Copyright (C) 2010 Quantum ESPRESSO group
3
+ ! This file is distributed under the terms of the
4
+ ! GNU General Public License. See the file `License'
5
+ ! in the root directory of the present distribution,
6
+ ! or http://www.gnu.org/copyleft/gpl.txt .
7
+ !
8
+ !----------------------------------------------------------------------------
9
+ SUBROUTINE plugin_initialization()
10
+ !----------------------------------------------------------------------------
11
+ !
12
+ USE io_global, ONLY : stdout, ionode
13
+ USE kinds, ONLY : DP
14
+ USE io_files, ONLY : tmp_dir
15
+ !
16
+ USE plugin_flags, ONLY : use_plumed
17
+ !
18
+ USE ions_base, ONLY : amass, ityp, nat
19
+ !
20
+ USE dynamics_module, ONLY : dt
21
+ USE constants, ONLY : au_ps
22
+
23
+ USE plumed_module, ONLY : plumed_f_installed, plumed_f_gcreate, plumed_f_gcmd
24
+ !
25
+ !
26
+ IMPLICIT NONE
27
+ !
28
+ INTEGER :: na
29
+ INTEGER :: plumedavailable
30
+ REAL*8 :: energyUnits,lengthUnits,timeUnits
31
+ !
32
+ IF(use_plumed) then
33
+
34
+ CALL plumed_f_installed(plumedavailable)
35
+
36
+ IF(plumedavailable<=0)THEN
37
+ write(stdout,*)"YOU ARE LOOKING FOR PLUMED BUT LOOKS LIKE IT IS NOT AVAILABLE: DO YOU HAVE IT IN YOUR LD_LIBRARY_PATH?"
38
+ STOP
39
+ ELSE
40
+ IF (ionode) THEN
41
+
42
+ write(stdout,*)" CREATING PLUMED FROM THE PROGRAM"
43
+ call plumed_f_gcreate()
44
+ CALL plumed_f_gcmd("setRealPrecision"//char(0),8)
45
+ energyUnits=1312.75 ! Ry to kjoule mol
46
+ lengthUnits=0.0529177249 ! bohr to nm
47
+ timeUnits=2*au_ps ! internal time to ps
48
+ call plumed_f_gcmd("setMDEnergyUnits"//char(0),energyUnits)
49
+ call plumed_f_gcmd("setMDLengthUnits"//char(0),lengthUnits)
50
+ call plumed_f_gcmd("setMDTimeUnits"//char(0),timeUnits)
51
+ call plumed_f_gcmd("setPlumedDat"//char(0),"plumed.dat"//char(0))
52
+ call plumed_f_gcmd("setLogFile"//char(0),"PLUMED.OUT"//char(0))
53
+ call plumed_f_gcmd("setNatoms"//char(0),nat)
54
+ call plumed_f_gcmd("setMDEngine"//char(0),"qespresso"//char(0));
55
+ call plumed_f_gcmd("setTimestep"//char(0),dt);
56
+ call plumed_f_gcmd("init"//char(0),0);
57
+
58
+
59
+ ENDIF
60
+ ENDIF
61
+ ENDIF
62
+ !
63
+ !
64
+ END SUBROUTINE plugin_initialization