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.
- hillclimber/__init__.py +41 -0
- hillclimber/actions.py +53 -0
- hillclimber/analysis.py +590 -0
- hillclimber/biases.py +293 -0
- hillclimber/calc.py +22 -0
- hillclimber/cvs.py +1070 -0
- hillclimber/interfaces.py +133 -0
- hillclimber/metadynamics.py +416 -0
- hillclimber/nodes.py +6 -0
- hillclimber/opes.py +359 -0
- hillclimber/pycv.py +362 -0
- hillclimber/selectors.py +230 -0
- hillclimber/virtual_atoms.py +341 -0
- hillclimber-0.1.6.dist-info/METADATA +325 -0
- hillclimber-0.1.6.dist-info/RECORD +475 -0
- hillclimber-0.1.6.dist-info/WHEEL +6 -0
- hillclimber-0.1.6.dist-info/entry_points.txt +8 -0
- hillclimber-0.1.6.dist-info/licenses/LICENSE +165 -0
- hillclimber-0.1.6.dist-info/sboms/auditwheel.cdx.json +1 -0
- hillclimber.libs/libgomp-a49a47f9.so.1.0.0 +0 -0
- plumed/__init__.py +104 -0
- plumed/_lib/bin/plumed +0 -0
- plumed/_lib/bin/plumed-config +9 -0
- plumed/_lib/bin/plumed-patch +9 -0
- plumed/_lib/include/plumed/adjmat/AdjacencyMatrixBase.h +659 -0
- plumed/_lib/include/plumed/adjmat/ContactMatrix.h +59 -0
- plumed/_lib/include/plumed/asmjit/arch.h +228 -0
- plumed/_lib/include/plumed/asmjit/arm.h +43 -0
- plumed/_lib/include/plumed/asmjit/asmjit.h +69 -0
- plumed/_lib/include/plumed/asmjit/asmjit_apibegin.h +143 -0
- plumed/_lib/include/plumed/asmjit/asmjit_apiend.h +93 -0
- plumed/_lib/include/plumed/asmjit/asmjit_build.h +971 -0
- plumed/_lib/include/plumed/asmjit/assembler.h +183 -0
- plumed/_lib/include/plumed/asmjit/base.h +56 -0
- plumed/_lib/include/plumed/asmjit/codebuilder.h +944 -0
- plumed/_lib/include/plumed/asmjit/codecompiler.h +767 -0
- plumed/_lib/include/plumed/asmjit/codeemitter.h +528 -0
- plumed/_lib/include/plumed/asmjit/codeholder.h +777 -0
- plumed/_lib/include/plumed/asmjit/constpool.h +286 -0
- plumed/_lib/include/plumed/asmjit/cpuinfo.h +402 -0
- plumed/_lib/include/plumed/asmjit/func.h +1327 -0
- plumed/_lib/include/plumed/asmjit/globals.h +370 -0
- plumed/_lib/include/plumed/asmjit/inst.h +137 -0
- plumed/_lib/include/plumed/asmjit/logging.h +317 -0
- plumed/_lib/include/plumed/asmjit/misc_p.h +103 -0
- plumed/_lib/include/plumed/asmjit/moved_string.h +318 -0
- plumed/_lib/include/plumed/asmjit/operand.h +1599 -0
- plumed/_lib/include/plumed/asmjit/osutils.h +207 -0
- plumed/_lib/include/plumed/asmjit/regalloc_p.h +597 -0
- plumed/_lib/include/plumed/asmjit/runtime.h +227 -0
- plumed/_lib/include/plumed/asmjit/simdtypes.h +1104 -0
- plumed/_lib/include/plumed/asmjit/utils.h +1387 -0
- plumed/_lib/include/plumed/asmjit/vmem.h +183 -0
- plumed/_lib/include/plumed/asmjit/x86.h +45 -0
- plumed/_lib/include/plumed/asmjit/x86assembler.h +125 -0
- plumed/_lib/include/plumed/asmjit/x86builder.h +117 -0
- plumed/_lib/include/plumed/asmjit/x86compiler.h +322 -0
- plumed/_lib/include/plumed/asmjit/x86emitter.h +5149 -0
- plumed/_lib/include/plumed/asmjit/x86globals.h +535 -0
- plumed/_lib/include/plumed/asmjit/x86inst.h +2547 -0
- plumed/_lib/include/plumed/asmjit/x86instimpl_p.h +74 -0
- plumed/_lib/include/plumed/asmjit/x86internal_p.h +108 -0
- plumed/_lib/include/plumed/asmjit/x86logging_p.h +92 -0
- plumed/_lib/include/plumed/asmjit/x86misc.h +417 -0
- plumed/_lib/include/plumed/asmjit/x86operand.h +1133 -0
- plumed/_lib/include/plumed/asmjit/x86regalloc_p.h +734 -0
- plumed/_lib/include/plumed/asmjit/zone.h +1157 -0
- plumed/_lib/include/plumed/bias/Bias.h +82 -0
- plumed/_lib/include/plumed/bias/ReweightBase.h +58 -0
- plumed/_lib/include/plumed/blas/blas.h +253 -0
- plumed/_lib/include/plumed/blas/def_external.h +61 -0
- plumed/_lib/include/plumed/blas/def_internal.h +97 -0
- plumed/_lib/include/plumed/blas/real.h +49 -0
- plumed/_lib/include/plumed/cltools/CLTool.h +32 -0
- plumed/_lib/include/plumed/clusters/ClusteringBase.h +70 -0
- plumed/_lib/include/plumed/colvar/Colvar.h +32 -0
- plumed/_lib/include/plumed/colvar/ColvarInput.h +68 -0
- plumed/_lib/include/plumed/colvar/ColvarShortcut.h +81 -0
- plumed/_lib/include/plumed/colvar/CoordinationBase.h +52 -0
- plumed/_lib/include/plumed/colvar/MultiColvarTemplate.h +333 -0
- plumed/_lib/include/plumed/colvar/PathMSDBase.h +101 -0
- plumed/_lib/include/plumed/colvar/RMSDVector.h +78 -0
- plumed/_lib/include/plumed/config/Config.h +118 -0
- plumed/_lib/include/plumed/config/version.h +9 -0
- plumed/_lib/include/plumed/contour/ContourFindingObject.h +87 -0
- plumed/_lib/include/plumed/contour/DistanceFromContourBase.h +82 -0
- plumed/_lib/include/plumed/contour/FindContour.h +67 -0
- plumed/_lib/include/plumed/core/Action.h +540 -0
- plumed/_lib/include/plumed/core/ActionAnyorder.h +48 -0
- plumed/_lib/include/plumed/core/ActionAtomistic.h +343 -0
- plumed/_lib/include/plumed/core/ActionForInterface.h +99 -0
- plumed/_lib/include/plumed/core/ActionPilot.h +57 -0
- plumed/_lib/include/plumed/core/ActionRegister.h +124 -0
- plumed/_lib/include/plumed/core/ActionSet.h +163 -0
- plumed/_lib/include/plumed/core/ActionSetup.h +48 -0
- plumed/_lib/include/plumed/core/ActionShortcut.h +73 -0
- plumed/_lib/include/plumed/core/ActionToGetData.h +59 -0
- plumed/_lib/include/plumed/core/ActionToPutData.h +101 -0
- plumed/_lib/include/plumed/core/ActionWithArguments.h +140 -0
- plumed/_lib/include/plumed/core/ActionWithMatrix.h +87 -0
- plumed/_lib/include/plumed/core/ActionWithValue.h +258 -0
- plumed/_lib/include/plumed/core/ActionWithVector.h +94 -0
- plumed/_lib/include/plumed/core/ActionWithVirtualAtom.h +123 -0
- plumed/_lib/include/plumed/core/CLTool.h +177 -0
- plumed/_lib/include/plumed/core/CLToolMain.h +102 -0
- plumed/_lib/include/plumed/core/CLToolRegister.h +108 -0
- plumed/_lib/include/plumed/core/Colvar.h +115 -0
- plumed/_lib/include/plumed/core/DataPassingObject.h +94 -0
- plumed/_lib/include/plumed/core/DataPassingTools.h +54 -0
- plumed/_lib/include/plumed/core/DomainDecomposition.h +120 -0
- plumed/_lib/include/plumed/core/ExchangePatterns.h +47 -0
- plumed/_lib/include/plumed/core/FlexibleBin.h +63 -0
- plumed/_lib/include/plumed/core/GREX.h +61 -0
- plumed/_lib/include/plumed/core/GenericMolInfo.h +89 -0
- plumed/_lib/include/plumed/core/Group.h +41 -0
- plumed/_lib/include/plumed/core/ModuleMap.h +30 -0
- plumed/_lib/include/plumed/core/ParallelTaskManager.h +1023 -0
- plumed/_lib/include/plumed/core/PbcAction.h +61 -0
- plumed/_lib/include/plumed/core/PlumedMain.h +632 -0
- plumed/_lib/include/plumed/core/PlumedMainInitializer.h +118 -0
- plumed/_lib/include/plumed/core/RegisterBase.h +340 -0
- plumed/_lib/include/plumed/core/TargetDist.h +48 -0
- plumed/_lib/include/plumed/core/Value.h +547 -0
- plumed/_lib/include/plumed/core/WithCmd.h +93 -0
- plumed/_lib/include/plumed/dimred/SMACOF.h +55 -0
- plumed/_lib/include/plumed/drr/DRR.h +383 -0
- plumed/_lib/include/plumed/drr/colvar_UIestimator.h +777 -0
- plumed/_lib/include/plumed/fisst/legendre_rule_fast.h +44 -0
- plumed/_lib/include/plumed/function/Custom.h +54 -0
- plumed/_lib/include/plumed/function/Function.h +85 -0
- plumed/_lib/include/plumed/function/FunctionOfMatrix.h +368 -0
- plumed/_lib/include/plumed/function/FunctionOfScalar.h +135 -0
- plumed/_lib/include/plumed/function/FunctionOfVector.h +296 -0
- plumed/_lib/include/plumed/function/FunctionSetup.h +180 -0
- plumed/_lib/include/plumed/function/FunctionShortcut.h +130 -0
- plumed/_lib/include/plumed/function/FunctionWithSingleArgument.h +165 -0
- plumed/_lib/include/plumed/gridtools/ActionWithGrid.h +43 -0
- plumed/_lib/include/plumed/gridtools/EvaluateGridFunction.h +99 -0
- plumed/_lib/include/plumed/gridtools/FunctionOfGrid.h +295 -0
- plumed/_lib/include/plumed/gridtools/GridCoordinatesObject.h +179 -0
- plumed/_lib/include/plumed/gridtools/GridSearch.h +135 -0
- plumed/_lib/include/plumed/gridtools/Interpolator.h +45 -0
- plumed/_lib/include/plumed/gridtools/KDE.h +455 -0
- plumed/_lib/include/plumed/gridtools/RDF.h +40 -0
- plumed/_lib/include/plumed/gridtools/SumOfKernels.h +219 -0
- plumed/_lib/include/plumed/isdb/MetainferenceBase.h +398 -0
- plumed/_lib/include/plumed/lapack/def_external.h +207 -0
- plumed/_lib/include/plumed/lapack/def_internal.h +388 -0
- plumed/_lib/include/plumed/lapack/lapack.h +899 -0
- plumed/_lib/include/plumed/lapack/lapack_limits.h +79 -0
- plumed/_lib/include/plumed/lapack/real.h +50 -0
- plumed/_lib/include/plumed/lepton/CompiledExpression.h +164 -0
- plumed/_lib/include/plumed/lepton/CustomFunction.h +143 -0
- plumed/_lib/include/plumed/lepton/Exception.h +93 -0
- plumed/_lib/include/plumed/lepton/ExpressionProgram.h +137 -0
- plumed/_lib/include/plumed/lepton/ExpressionTreeNode.h +145 -0
- plumed/_lib/include/plumed/lepton/Lepton.h +85 -0
- plumed/_lib/include/plumed/lepton/MSVC_erfc.h +123 -0
- plumed/_lib/include/plumed/lepton/Operation.h +1302 -0
- plumed/_lib/include/plumed/lepton/ParsedExpression.h +165 -0
- plumed/_lib/include/plumed/lepton/Parser.h +111 -0
- plumed/_lib/include/plumed/lepton/windowsIncludes.h +73 -0
- plumed/_lib/include/plumed/mapping/Path.h +44 -0
- plumed/_lib/include/plumed/mapping/PathProjectionCalculator.h +57 -0
- plumed/_lib/include/plumed/matrixtools/MatrixOperationBase.h +54 -0
- plumed/_lib/include/plumed/matrixtools/MatrixTimesMatrix.h +309 -0
- plumed/_lib/include/plumed/matrixtools/MatrixTimesVectorBase.h +365 -0
- plumed/_lib/include/plumed/matrixtools/OuterProduct.h +238 -0
- plumed/_lib/include/plumed/maze/Core.h +65 -0
- plumed/_lib/include/plumed/maze/Loss.h +86 -0
- plumed/_lib/include/plumed/maze/Member.h +66 -0
- plumed/_lib/include/plumed/maze/Memetic.h +799 -0
- plumed/_lib/include/plumed/maze/Optimizer.h +357 -0
- plumed/_lib/include/plumed/maze/Random_MT.h +156 -0
- plumed/_lib/include/plumed/maze/Tools.h +183 -0
- plumed/_lib/include/plumed/metatomic/vesin.h +188 -0
- plumed/_lib/include/plumed/molfile/Gromacs.h +2013 -0
- plumed/_lib/include/plumed/molfile/endianswap.h +217 -0
- plumed/_lib/include/plumed/molfile/fastio.h +683 -0
- plumed/_lib/include/plumed/molfile/largefiles.h +78 -0
- plumed/_lib/include/plumed/molfile/libmolfile_plugin.h +77 -0
- plumed/_lib/include/plumed/molfile/molfile_plugin.h +1034 -0
- plumed/_lib/include/plumed/molfile/periodic_table.h +248 -0
- plumed/_lib/include/plumed/molfile/readpdb.h +447 -0
- plumed/_lib/include/plumed/molfile/vmdplugin.h +236 -0
- plumed/_lib/include/plumed/multicolvar/MultiColvarShortcuts.h +45 -0
- plumed/_lib/include/plumed/opes/ExpansionCVs.h +79 -0
- plumed/_lib/include/plumed/sasa/Sasa.h +32 -0
- plumed/_lib/include/plumed/secondarystructure/SecondaryStructureBase.h +372 -0
- plumed/_lib/include/plumed/setup/ActionSetup.h +25 -0
- plumed/_lib/include/plumed/small_vector/small_vector.h +6114 -0
- plumed/_lib/include/plumed/symfunc/CoordinationNumbers.h +41 -0
- plumed/_lib/include/plumed/tools/Angle.h +52 -0
- plumed/_lib/include/plumed/tools/AtomDistribution.h +138 -0
- plumed/_lib/include/plumed/tools/AtomNumber.h +152 -0
- plumed/_lib/include/plumed/tools/BiasRepresentation.h +106 -0
- plumed/_lib/include/plumed/tools/BitmaskEnum.h +167 -0
- plumed/_lib/include/plumed/tools/Brent1DRootSearch.h +159 -0
- plumed/_lib/include/plumed/tools/CheckInRange.h +44 -0
- plumed/_lib/include/plumed/tools/Citations.h +74 -0
- plumed/_lib/include/plumed/tools/ColvarOutput.h +118 -0
- plumed/_lib/include/plumed/tools/Communicator.h +316 -0
- plumed/_lib/include/plumed/tools/ConjugateGradient.h +80 -0
- plumed/_lib/include/plumed/tools/DLLoader.h +79 -0
- plumed/_lib/include/plumed/tools/ERMSD.h +73 -0
- plumed/_lib/include/plumed/tools/Exception.h +406 -0
- plumed/_lib/include/plumed/tools/File.h +28 -0
- plumed/_lib/include/plumed/tools/FileBase.h +153 -0
- plumed/_lib/include/plumed/tools/FileTools.h +37 -0
- plumed/_lib/include/plumed/tools/ForwardDecl.h +54 -0
- plumed/_lib/include/plumed/tools/Grid.h +638 -0
- plumed/_lib/include/plumed/tools/HistogramBead.h +136 -0
- plumed/_lib/include/plumed/tools/IFile.h +117 -0
- plumed/_lib/include/plumed/tools/KernelFunctions.h +113 -0
- plumed/_lib/include/plumed/tools/Keywords.h +380 -0
- plumed/_lib/include/plumed/tools/LatticeReduction.h +66 -0
- plumed/_lib/include/plumed/tools/LeptonCall.h +64 -0
- plumed/_lib/include/plumed/tools/LinkCells.h +126 -0
- plumed/_lib/include/plumed/tools/Log.h +41 -0
- plumed/_lib/include/plumed/tools/LoopUnroller.h +163 -0
- plumed/_lib/include/plumed/tools/Matrix.h +721 -0
- plumed/_lib/include/plumed/tools/MatrixSquareBracketsAccess.h +138 -0
- plumed/_lib/include/plumed/tools/MergeVectorTools.h +153 -0
- plumed/_lib/include/plumed/tools/Minimise1DBrent.h +244 -0
- plumed/_lib/include/plumed/tools/MinimiseBase.h +120 -0
- plumed/_lib/include/plumed/tools/MolDataClass.h +51 -0
- plumed/_lib/include/plumed/tools/NeighborList.h +112 -0
- plumed/_lib/include/plumed/tools/OFile.h +286 -0
- plumed/_lib/include/plumed/tools/OpenACC.h +180 -0
- plumed/_lib/include/plumed/tools/OpenMP.h +75 -0
- plumed/_lib/include/plumed/tools/PDB.h +154 -0
- plumed/_lib/include/plumed/tools/Pbc.h +139 -0
- plumed/_lib/include/plumed/tools/PlumedHandle.h +105 -0
- plumed/_lib/include/plumed/tools/RMSD.h +493 -0
- plumed/_lib/include/plumed/tools/Random.h +80 -0
- plumed/_lib/include/plumed/tools/RootFindingBase.h +79 -0
- plumed/_lib/include/plumed/tools/Stopwatch.h +475 -0
- plumed/_lib/include/plumed/tools/Subprocess.h +142 -0
- plumed/_lib/include/plumed/tools/SwitchingFunction.h +208 -0
- plumed/_lib/include/plumed/tools/Tensor.h +724 -0
- plumed/_lib/include/plumed/tools/TokenizedLine.h +123 -0
- plumed/_lib/include/plumed/tools/Tools.h +638 -0
- plumed/_lib/include/plumed/tools/Torsion.h +55 -0
- plumed/_lib/include/plumed/tools/TrajectoryParser.h +118 -0
- plumed/_lib/include/plumed/tools/Tree.h +61 -0
- plumed/_lib/include/plumed/tools/TypesafePtr.h +463 -0
- plumed/_lib/include/plumed/tools/Units.h +167 -0
- plumed/_lib/include/plumed/tools/Vector.h +433 -0
- plumed/_lib/include/plumed/tools/View.h +296 -0
- plumed/_lib/include/plumed/tools/View2D.h +100 -0
- plumed/_lib/include/plumed/tools/h36.h +39 -0
- plumed/_lib/include/plumed/vatom/ActionWithVirtualAtom.h +32 -0
- plumed/_lib/include/plumed/ves/BasisFunctions.h +380 -0
- plumed/_lib/include/plumed/ves/CoeffsBase.h +310 -0
- plumed/_lib/include/plumed/ves/CoeffsMatrix.h +220 -0
- plumed/_lib/include/plumed/ves/CoeffsVector.h +251 -0
- plumed/_lib/include/plumed/ves/FermiSwitchingFunction.h +74 -0
- plumed/_lib/include/plumed/ves/GridIntegrationWeights.h +50 -0
- plumed/_lib/include/plumed/ves/GridLinearInterpolation.h +81 -0
- plumed/_lib/include/plumed/ves/GridProjWeights.h +61 -0
- plumed/_lib/include/plumed/ves/LinearBasisSetExpansion.h +303 -0
- plumed/_lib/include/plumed/ves/Optimizer.h +444 -0
- plumed/_lib/include/plumed/ves/TargetDistModifer.h +53 -0
- plumed/_lib/include/plumed/ves/TargetDistribution.h +266 -0
- plumed/_lib/include/plumed/ves/VesBias.h +545 -0
- plumed/_lib/include/plumed/ves/VesTools.h +142 -0
- plumed/_lib/include/plumed/ves/WaveletGrid.h +75 -0
- plumed/_lib/include/plumed/volumes/ActionVolume.h +268 -0
- plumed/_lib/include/plumed/volumes/VolumeShortcut.h +147 -0
- plumed/_lib/include/plumed/wrapper/Plumed.h +5025 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile.h +663 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile_trr.h +89 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile_xtc.h +90 -0
- plumed/_lib/lib/PythonCVInterface.so +0 -0
- plumed/_lib/lib/libplumed.a +0 -0
- plumed/_lib/lib/libplumed.so +0 -0
- plumed/_lib/lib/libplumedKernel.so +0 -0
- plumed/_lib/lib/libplumedWrapper.a +0 -0
- plumed/_lib/lib/pkgconfig/plumed.pc +13 -0
- plumed/_lib/lib/pkgconfig/plumedInternals.pc +13 -0
- plumed/_lib/lib/pkgconfig/plumedWrapper.pc +13 -0
- plumed/_lib/lib/plumed/fortran/plumed.f90 +879 -0
- plumed/_lib/lib/plumed/fortran/plumed_f08.f90 +2625 -0
- plumed/_lib/lib/plumed/modulefile +69 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt +543 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt.preplumed +540 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp +1628 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1590 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h +103 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h.preplumed +99 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp +2527 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +408 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +394 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp +2348 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2091 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp +3573 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3495 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1506 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1402 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp +997 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +906 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp +2780 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2738 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt +549 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt.preplumed +546 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h +104 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp +2624 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2610 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +395 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp +2419 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2164 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp +3546 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3468 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp +991 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +900 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp +2895 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2849 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp +886 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +880 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +347 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +345 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt +575 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt.preplumed +572 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h +104 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp +2564 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2550 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h +410 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +396 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp +2435 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp.preplumed +2187 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp +3592 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3514 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp +958 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp.preplumed +929 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp +2987 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp.preplumed +2941 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp +904 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +898 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +353 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +351 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.config +39 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake +82 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake.preplumed +82 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp +162 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp.preplumed +154 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp +107 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp.preplumed +99 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h +120 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h.preplumed +111 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp +215 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp.preplumed +197 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h +87 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h.preplumed +86 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp +2971 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp.preplumed +2970 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h +430 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h.preplumed +429 -0
- plumed/_lib/lib/plumed/patches/namd-2.12.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.12.diff +267 -0
- plumed/_lib/lib/plumed/patches/namd-2.13.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.13.diff +267 -0
- plumed/_lib/lib/plumed/patches/namd-2.14.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.14.diff +268 -0
- plumed/_lib/lib/plumed/patches/patch.sh +500 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.config +25 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90 +368 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90.preplumed +366 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90 +71 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90.preplumed +24 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90 +62 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90 +189 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90.preplumed +185 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.config +26 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90 +422 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90.preplumed +420 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90 +70 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90 +62 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90 +233 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90.preplumed +230 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.config +28 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile +175 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile.preplumed +171 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90 +486 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90.preplumed +484 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90 +74 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90 +64 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90 +532 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90.preplumed +518 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.config +28 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile +249 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile.preplumed +244 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90 +532 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90.preplumed +535 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90 +74 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90 +64 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90 +569 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90.preplumed +560 -0
- plumed/_lib/lib/plumed/plumed-config +9 -0
- plumed/_lib/lib/plumed/plumed-mklib +9 -0
- plumed/_lib/lib/plumed/plumed-newcv +9 -0
- plumed/_lib/lib/plumed/plumed-partial_tempering +9 -0
- plumed/_lib/lib/plumed/plumed-patch +9 -0
- plumed/_lib/lib/plumed/plumed-runtime +0 -0
- plumed/_lib/lib/plumed/plumed-selector +9 -0
- plumed/_lib/lib/plumed/plumed-vim2html +9 -0
- plumed/_lib/lib/plumed/scripts/config.sh +126 -0
- plumed/_lib/lib/plumed/scripts/mklib.sh +175 -0
- plumed/_lib/lib/plumed/scripts/newcv.sh +26 -0
- plumed/_lib/lib/plumed/scripts/partial_tempering.sh +319 -0
- plumed/_lib/lib/plumed/scripts/patch.sh +4 -0
- plumed/_lib/lib/plumed/scripts/selector.sh +234 -0
- plumed/_lib/lib/plumed/scripts/vim2html.sh +190 -0
- plumed/_lib/lib/plumed/src/colvar/Template.cpp +116 -0
- plumed/_lib/lib/plumed/src/config/compile_options.sh +3 -0
- plumed/_lib/lib/plumed/src/config/config.txt +179 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake +8 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.runtime +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.shared +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.static +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc +8 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.runtime +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.shared +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.static +5 -0
- plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
- plumed/_plumed_core.cpython-311-aarch64-linux-gnu.so +0 -0
- plumed/_plumed_core.cpython-312-aarch64-linux-gnu.so +0 -0
- plumed/_plumed_core.cpython-313-aarch64-linux-gnu.so +0 -0
- plumed/_plumed_core.cpython-314-aarch64-linux-gnu.so +0 -0
- plumed/_plumed_core.cpython-314t-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-311-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-312-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-313-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-314-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-314t-aarch64-linux-gnu.so +0 -0
- plumedCommunications.pyi +431 -0
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2011-2023 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_tools_RMSD_h
|
|
23
|
+
#define __PLUMED_tools_RMSD_h
|
|
24
|
+
|
|
25
|
+
#include "Vector.h"
|
|
26
|
+
#include "Matrix.h"
|
|
27
|
+
#include "Tensor.h"
|
|
28
|
+
#include "View.h"
|
|
29
|
+
#include <vector>
|
|
30
|
+
#include <string>
|
|
31
|
+
#include <array>
|
|
32
|
+
|
|
33
|
+
namespace PLMD {
|
|
34
|
+
|
|
35
|
+
class Log;
|
|
36
|
+
class PDB;
|
|
37
|
+
|
|
38
|
+
/** \ingroup TOOLBOX
|
|
39
|
+
A class that implements RMSD calculations
|
|
40
|
+
This is a class that implements the various infrastructure to calculate the
|
|
41
|
+
RMSD or MSD respect a given frame. It can be done through an optimal alignment scheme
|
|
42
|
+
as Kearsley or, more simply, by resetting the center of mass.
|
|
43
|
+
This is the class that decides this. A very simple use is
|
|
44
|
+
\verbatim
|
|
45
|
+
#include "../tools/PDB.h"
|
|
46
|
+
#include "../tools/RMSD.h"
|
|
47
|
+
#include "../tools/Vector.h"
|
|
48
|
+
using namespace PLMD;
|
|
49
|
+
RMSD rmsd;
|
|
50
|
+
PDB pdb;
|
|
51
|
+
// get the pdb (see PDB documentation)
|
|
52
|
+
pdb.read("file.pdb",true,1.0);
|
|
53
|
+
string type;
|
|
54
|
+
type.assign("OPTIMAL");
|
|
55
|
+
// set the reference and the type
|
|
56
|
+
rmsd.set(pdb,type);
|
|
57
|
+
// this calculates the rmsd and the derivatives
|
|
58
|
+
vector<Vector> derivs;
|
|
59
|
+
double val;
|
|
60
|
+
val=rmsd.calculate(getPositions(),derivs,true);
|
|
61
|
+
\endverbatim
|
|
62
|
+
|
|
63
|
+
**/
|
|
64
|
+
|
|
65
|
+
class RMSD {
|
|
66
|
+
enum AlignmentMethod {SIMPLE, OPTIMAL, OPTIMAL_FAST};
|
|
67
|
+
AlignmentMethod alignmentMethod=SIMPLE;
|
|
68
|
+
// Reference coordinates
|
|
69
|
+
std::vector<Vector> reference;
|
|
70
|
+
// Weights for alignment
|
|
71
|
+
std::vector<double> align;
|
|
72
|
+
// Weights for deviation
|
|
73
|
+
std::vector<double> displace;
|
|
74
|
+
// Center for reference and flag for its calculation
|
|
75
|
+
Vector reference_center;
|
|
76
|
+
bool reference_center_is_calculated=false;
|
|
77
|
+
bool reference_center_is_removed=false;
|
|
78
|
+
// Center for running position (not used in principle but here to reflect reference/positio symmetry
|
|
79
|
+
Vector positions_center;
|
|
80
|
+
bool positions_center_is_calculated=false;
|
|
81
|
+
bool positions_center_is_removed=false;
|
|
82
|
+
// calculates the center from the position provided
|
|
83
|
+
Vector calculateCenter(const std::vector<Vector>&p,const std::vector<double> &w) {
|
|
84
|
+
plumed_massert(p.size()==w.size(),"mismatch in dimension of position/align arrays while calculating the center");
|
|
85
|
+
unsigned n;
|
|
86
|
+
n=p.size();
|
|
87
|
+
Vector c;
|
|
88
|
+
c.zero();
|
|
89
|
+
for(unsigned i=0; i<n; i++) {
|
|
90
|
+
c+=p[i]*w[i];
|
|
91
|
+
}
|
|
92
|
+
return c;
|
|
93
|
+
};
|
|
94
|
+
// removes the center for the position provided
|
|
95
|
+
void removeCenter(std::vector<Vector>&p, const Vector &c) {
|
|
96
|
+
unsigned n;
|
|
97
|
+
n=p.size();
|
|
98
|
+
for(unsigned i=0; i<n; i++) {
|
|
99
|
+
p[i]-=c;
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
// add center
|
|
103
|
+
void addCenter(std::vector<Vector>&p, const Vector &c) {
|
|
104
|
+
Vector cc=c*-1.;
|
|
105
|
+
removeCenter(p,cc);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
public:
|
|
109
|
+
/// Constructor
|
|
110
|
+
RMSD();
|
|
111
|
+
/// clear the structure
|
|
112
|
+
void clear();
|
|
113
|
+
/// set reference, align and displace from input pdb structure: evtl remove com from the initial structure and normalize the input weights from the pdb
|
|
114
|
+
void set(const PDB&,
|
|
115
|
+
const std::string & mytype,
|
|
116
|
+
bool remove_center=true,
|
|
117
|
+
bool normalize_weights=true);
|
|
118
|
+
/// set align displace reference and type from input vectors
|
|
119
|
+
void set(const std::vector<double>& alignTo,
|
|
120
|
+
const std::vector<double>& displaceFrom,
|
|
121
|
+
const std::vector<Vector>& ref,
|
|
122
|
+
const std::string & mytype,
|
|
123
|
+
bool remove_center=true,
|
|
124
|
+
bool normalize_weights=true );
|
|
125
|
+
/// set the type of alignment we are doing
|
|
126
|
+
void setType(const std::string & mytype);
|
|
127
|
+
/// set reference coordinates, remove the com by using uniform weights
|
|
128
|
+
void setReference(const std::vector<Vector>& ref);
|
|
129
|
+
const std::vector<Vector>& getReference() const ;
|
|
130
|
+
/// set weights and remove the center from reference with normalized weights. If the com has been removed, it resets to the new value
|
|
131
|
+
void setAlign(const std::vector<double>& alignTo,
|
|
132
|
+
bool normalize_weights=true,
|
|
133
|
+
bool remove_center=true);
|
|
134
|
+
std::vector<double> getAlign();
|
|
135
|
+
/// set align
|
|
136
|
+
void setDisplace(const std::vector<double>& displaceFrom, bool normalize_weights=true);
|
|
137
|
+
std::vector<double> getDisplace();
|
|
138
|
+
///
|
|
139
|
+
std::string getMethod() const ;
|
|
140
|
+
/// workhorses
|
|
141
|
+
double simpleAlignment(const std::vector<double>& alignTo,
|
|
142
|
+
const std::vector<double>& displaceFrom,
|
|
143
|
+
const View<Vector> positions,
|
|
144
|
+
const std::vector<Vector>& ref,
|
|
145
|
+
std::vector<Vector>& derivatives,
|
|
146
|
+
std::vector<Vector>& displacement,
|
|
147
|
+
bool squared=false)const;
|
|
148
|
+
template <bool safe,bool alEqDis>
|
|
149
|
+
double optimalAlignment(const std::vector<double>& alignTo,
|
|
150
|
+
const std::vector<double>& displaceFrom,
|
|
151
|
+
const View<Vector> positions,
|
|
152
|
+
const std::vector<Vector>& ref,
|
|
153
|
+
std::vector<Vector>& DDistDPos, bool squared=false)const;
|
|
154
|
+
|
|
155
|
+
template <bool safe, bool alEqDis>
|
|
156
|
+
double optimalAlignmentWithCloseStructure(const std::vector<double>& alignTo,
|
|
157
|
+
const std::vector<double>& displaceFrom,
|
|
158
|
+
const View<Vector> positions,
|
|
159
|
+
const std::vector<Vector>& ref,
|
|
160
|
+
std::vector<Vector>& derivatives,
|
|
161
|
+
const Tensor & rotationPosClose,
|
|
162
|
+
const Tensor & rotationRefClose,
|
|
163
|
+
std::array<std::array<Tensor,3>,3>& drotationPosCloseDrr01,
|
|
164
|
+
bool squared=false)const;
|
|
165
|
+
|
|
166
|
+
template <bool safe, bool alEqDis>
|
|
167
|
+
double optimalAlignment_Rot_DRotDRr01(const std::vector<double>& alignTo,
|
|
168
|
+
const std::vector<double>& displaceFrom,
|
|
169
|
+
const View<Vector> positions,
|
|
170
|
+
const std::vector<Vector>& ref,
|
|
171
|
+
Tensor & Rotation,
|
|
172
|
+
std::array<std::array<Tensor,3>,3>& drotationPosCloseDrr01,
|
|
173
|
+
bool squared=false)const;
|
|
174
|
+
|
|
175
|
+
template <bool safe, bool alEqDis>
|
|
176
|
+
double optimalAlignment_Rot(const std::vector<double>& alignTo,
|
|
177
|
+
const std::vector<double>& displaceFrom,
|
|
178
|
+
const View<Vector> positions,
|
|
179
|
+
const std::vector<Vector>& ref,
|
|
180
|
+
std::vector<Vector>& derivatives,
|
|
181
|
+
Tensor & Rotation,
|
|
182
|
+
bool squared=false)const;
|
|
183
|
+
|
|
184
|
+
template <bool safe,bool alEqDis>
|
|
185
|
+
double optimalAlignment_DDistDRef(const std::vector<double>& alignTo,
|
|
186
|
+
const std::vector<double>& displaceFrom,
|
|
187
|
+
const View<Vector> positions,
|
|
188
|
+
const std::vector<Vector>& ref,
|
|
189
|
+
std::vector<Vector>& DDistDPos,
|
|
190
|
+
std::vector<Vector>& DDistDRef,
|
|
191
|
+
bool squared=false) const;
|
|
192
|
+
|
|
193
|
+
template <bool safe,bool alEqDis>
|
|
194
|
+
double optimalAlignment_SOMA(const std::vector<double>& alignTo,
|
|
195
|
+
const std::vector<double>& displaceFrom,
|
|
196
|
+
const View<Vector> positions,
|
|
197
|
+
const std::vector<Vector>& ref,
|
|
198
|
+
std::vector<Vector>& DDistDPos,
|
|
199
|
+
std::vector<Vector>& DDistDRef,
|
|
200
|
+
bool squared=false) const;
|
|
201
|
+
|
|
202
|
+
template <bool safe,bool alEqDis>
|
|
203
|
+
double optimalAlignment_DDistDRef_Rot_DRotDPos(const std::vector<double>& alignTo,
|
|
204
|
+
const std::vector<double>& displaceFrom,
|
|
205
|
+
const View<Vector> positions,
|
|
206
|
+
const std::vector<Vector>& ref,
|
|
207
|
+
std::vector<Vector>& DDistDPos,
|
|
208
|
+
std::vector<Vector>& DDistDRef,
|
|
209
|
+
Tensor & Rotation,
|
|
210
|
+
Matrix<std::vector<Vector> >&DRotDPos,
|
|
211
|
+
bool squared=false) const;
|
|
212
|
+
|
|
213
|
+
template <bool safe,bool alEqDis>
|
|
214
|
+
double optimalAlignment_DDistDRef_Rot_DRotDPos_DRotDRef(const std::vector<double>& alignTo,
|
|
215
|
+
const std::vector<double>& displaceFrom,
|
|
216
|
+
const View<Vector> positions,
|
|
217
|
+
const std::vector<Vector>& ref,
|
|
218
|
+
std::vector<Vector>& DDistDPos,
|
|
219
|
+
std::vector<Vector>& DDistDRef,
|
|
220
|
+
Tensor & Rotation,
|
|
221
|
+
Matrix<std::vector<Vector> >&DRotDPos,
|
|
222
|
+
Matrix<std::vector<Vector> >&DRotDRef,
|
|
223
|
+
bool squared=false) const;
|
|
224
|
+
|
|
225
|
+
template <bool safe,bool alEqDis>
|
|
226
|
+
double optimalAlignment_PCA(const std::vector<double>& alignTo,
|
|
227
|
+
const std::vector<double>& displaceFrom,
|
|
228
|
+
const View<Vector> positions,
|
|
229
|
+
const std::vector<Vector>& ref,
|
|
230
|
+
std::vector<Vector>& alignedpositions,
|
|
231
|
+
std::vector<Vector>& centeredpositions,
|
|
232
|
+
std::vector<Vector>& centeredreference,
|
|
233
|
+
Tensor & Rotation,
|
|
234
|
+
std::vector<Vector>& DDistDPos,
|
|
235
|
+
Matrix<std::vector<Vector> >& DRotDPos,
|
|
236
|
+
bool squared=false) const ;
|
|
237
|
+
|
|
238
|
+
template <bool safe,bool alEqDis>
|
|
239
|
+
double optimalAlignment_Fit(const std::vector<double>& alignTo,
|
|
240
|
+
const std::vector<double>& displaceFrom,
|
|
241
|
+
const View<Vector> positions,
|
|
242
|
+
const std::vector<Vector>& ref,
|
|
243
|
+
Tensor & Rotation,
|
|
244
|
+
Matrix<std::vector<Vector> >& DRotDPos,
|
|
245
|
+
std::vector<Vector>& centeredpositions,
|
|
246
|
+
Vector & center_positions,
|
|
247
|
+
bool squared=false);
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
/// Compute rmsd: note that this is an intermediate layer which is kept in order to evtl expand with more alignment types/user options to be called while keeping the workhorses separated
|
|
251
|
+
//#pragma acc routine
|
|
252
|
+
double calculate(const View<Vector> positions,
|
|
253
|
+
std::vector<Vector>&derivatives,
|
|
254
|
+
bool squared=false)const;
|
|
255
|
+
double calculate(const std::vector<Vector>& positions,
|
|
256
|
+
std::vector<Vector>&derivatives,
|
|
257
|
+
bool squared=false)const;
|
|
258
|
+
/// Other convenience methods:
|
|
259
|
+
/// calculate the derivative of distance respect to position(DDistDPos) and reference (DDistDPos)
|
|
260
|
+
double calc_DDistDRef( const std::vector<Vector>& positions, std::vector<Vector> &DDistDPos, std::vector<Vector>& DDistDRef, const bool squared=false );
|
|
261
|
+
/// calculate the derivative for SOMA (i.e. derivative respect to reference frame without the matrix derivative)
|
|
262
|
+
double calc_SOMA( const std::vector<Vector>& positions,
|
|
263
|
+
std::vector<Vector>&DDistDPos,
|
|
264
|
+
std::vector<Vector>& DDistDRef,
|
|
265
|
+
const bool squared=false);
|
|
266
|
+
///
|
|
267
|
+
double calc_DDistDRef_Rot_DRotDPos( const std::vector<Vector>& positions,
|
|
268
|
+
std::vector<Vector>&DDistDPos,
|
|
269
|
+
std::vector<Vector>& DDistDRef,
|
|
270
|
+
Tensor & Rotation,Matrix<std::vector<Vector> >&DRotDPos,
|
|
271
|
+
const bool squared=false);
|
|
272
|
+
double calc_DDistDRef_Rot_DRotDPos_DRotDRef( const std::vector<Vector>& positions,
|
|
273
|
+
std::vector<Vector>&DDistDPos,
|
|
274
|
+
std::vector<Vector>& DDistDRef,
|
|
275
|
+
Tensor & Rotation,Matrix<std::vector<Vector> >&DRotDPos,Matrix<std::vector<Vector> > &DRotDRef,
|
|
276
|
+
const bool squared=false);
|
|
277
|
+
/// convenience method to retrieve all the bits and pieces for PCA
|
|
278
|
+
double calc_PCAelements( const std::vector<Vector>& pos,
|
|
279
|
+
std::vector<Vector>&DDistDPos,
|
|
280
|
+
Tensor & Rotation,
|
|
281
|
+
Matrix<std::vector<Vector> >& DRotDPos,std::vector<Vector> & alignedpositions,
|
|
282
|
+
std::vector<Vector>& centeredpositions,
|
|
283
|
+
std::vector<Vector>¢eredreference,
|
|
284
|
+
bool squared=false) const ;
|
|
285
|
+
/// convenience method to retrieve all the bits and pieces needed by FitToTemplate
|
|
286
|
+
double calc_FitElements( const std::vector<Vector>& pos,
|
|
287
|
+
Tensor & Rotation,
|
|
288
|
+
Matrix<std::vector<Vector> >& DRotDPos,std::vector<Vector> & centeredpositions,Vector & center_positions,
|
|
289
|
+
bool squared=false );
|
|
290
|
+
///calculate rotation matrix, derivative of rotation matrix w.r.t. positions, derivative of rotation matrix w.r.t. rr01
|
|
291
|
+
double calc_Rot_DRotDRr01( const std::vector<Vector>& positions,
|
|
292
|
+
Tensor & Rotation,
|
|
293
|
+
std::array<std::array<Tensor,3>,3>& DRotDRr01,
|
|
294
|
+
const bool squared=false );
|
|
295
|
+
///calculate rotation matrix, derivative of rotation matrix w.r.t. positions
|
|
296
|
+
double calc_Rot( const std::vector<Vector>& positions,
|
|
297
|
+
std::vector<Vector>&DDistDPos,
|
|
298
|
+
Tensor & Rotation,
|
|
299
|
+
const bool squared=false );
|
|
300
|
+
///calculate with close structure, i.e. approximate the RMSD without expensive computation of rotation matrix by reusing saved rotation matrices from previous iterations
|
|
301
|
+
double calculateWithCloseStructure( const std::vector<Vector>& positions,
|
|
302
|
+
std::vector<Vector>&DDistDPos,
|
|
303
|
+
const Tensor & rotationPosClose,
|
|
304
|
+
const Tensor & rotationRefClose,
|
|
305
|
+
std::array<std::array<Tensor,3>,3>& drotationPosCloseDrr01,
|
|
306
|
+
const bool squared=false );
|
|
307
|
+
/// static convenience method to get the matrix i,a from drotdpos (which is a bit tricky)
|
|
308
|
+
static Tensor getMatrixFromDRot(const Matrix< std::vector<Vector> >&drotdpos, const unsigned i, const unsigned a) {
|
|
309
|
+
Tensor t;
|
|
310
|
+
t[0][0]=drotdpos(0,0)[i][a];
|
|
311
|
+
t[0][1]=drotdpos(0,1)[i][a];
|
|
312
|
+
t[0][2]=drotdpos(0,2)[i][a];
|
|
313
|
+
t[1][0]=drotdpos(1,0)[i][a];
|
|
314
|
+
t[1][1]=drotdpos(1,1)[i][a];
|
|
315
|
+
t[1][2]=drotdpos(1,2)[i][a];
|
|
316
|
+
t[2][0]=drotdpos(2,0)[i][a];
|
|
317
|
+
t[2][1]=drotdpos(2,1)[i][a];
|
|
318
|
+
t[2][2]=drotdpos(2,2)[i][a];
|
|
319
|
+
return t;
|
|
320
|
+
};
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
/// this is a class which is needed to share information across the various non-threadsafe routines
|
|
324
|
+
/// so that the public function of rmsd are threadsafe while the inner core can safely share information
|
|
325
|
+
class RMSDCoreData {
|
|
326
|
+
private:
|
|
327
|
+
//the parameters that are common to the two constructors
|
|
328
|
+
//are inititialized here at declaration,
|
|
329
|
+
//to underline differences in setups
|
|
330
|
+
bool alEqDis=false;
|
|
331
|
+
bool distanceIsMSD=false; // default is RMSD but can deliver the MSD
|
|
332
|
+
bool hasDistance=false; // distance is already calculated
|
|
333
|
+
bool isInitialized=false;
|
|
334
|
+
bool safe=false;
|
|
335
|
+
|
|
336
|
+
// this need to be copied and they are small, should not affect the performance
|
|
337
|
+
Vector creference;
|
|
338
|
+
bool creference_is_calculated;
|
|
339
|
+
bool creference_is_removed;
|
|
340
|
+
Vector cpositions;
|
|
341
|
+
bool cpositions_is_calculated;
|
|
342
|
+
bool cpositions_is_removed;
|
|
343
|
+
bool retrieve_only_rotation;
|
|
344
|
+
|
|
345
|
+
// use reference assignment to speed up instead of copying
|
|
346
|
+
const View<Vector> positions;
|
|
347
|
+
const std::vector<Vector>&reference;
|
|
348
|
+
const std::vector<double>&align;
|
|
349
|
+
const std::vector<double>&displace;
|
|
350
|
+
|
|
351
|
+
// the needed stuff for distance and more (one could use eigenvecs components and eigenvals for some reason)
|
|
352
|
+
double dist=0.0;
|
|
353
|
+
Vector4d eigenvals;
|
|
354
|
+
Tensor4d eigenvecs;
|
|
355
|
+
double rr00=0.0; // sum of positions squared (needed for dist calc)
|
|
356
|
+
double rr11=0.0; // sum of reference squared (needed for dist calc)
|
|
357
|
+
Tensor rotation; // rotation derived from the eigenvector having the smallest eigenvalue
|
|
358
|
+
std::array<std::array<Tensor,3>,3> drotation_drr01; // derivative of the rotation only available when align!=displace
|
|
359
|
+
Tensor ddist_drr01;
|
|
360
|
+
Tensor ddist_drotation;
|
|
361
|
+
std::vector<Vector> d; // difference of components
|
|
362
|
+
public:
|
|
363
|
+
/// the constructor (note: only references are passed, therefore is rather fast)
|
|
364
|
+
/// note: this aligns the reference onto the positions
|
|
365
|
+
///
|
|
366
|
+
/// this method assumes that the centers are already calculated and subtracted
|
|
367
|
+
RMSDCoreData(const std::vector<double>&a,
|
|
368
|
+
const std::vector<double>&disp,
|
|
369
|
+
const View<Vector> p,
|
|
370
|
+
const std::vector<Vector>&r,
|
|
371
|
+
const Vector &cp,
|
|
372
|
+
const Vector &cr )
|
|
373
|
+
: creference(cr),
|
|
374
|
+
creference_is_calculated(true),
|
|
375
|
+
creference_is_removed(true),
|
|
376
|
+
cpositions(cp),
|
|
377
|
+
cpositions_is_calculated(true),
|
|
378
|
+
cpositions_is_removed(true),
|
|
379
|
+
retrieve_only_rotation(false),
|
|
380
|
+
positions(p),
|
|
381
|
+
reference(r),
|
|
382
|
+
align(a),
|
|
383
|
+
displace(disp) {}
|
|
384
|
+
|
|
385
|
+
// this constructor does not assume that the positions and reference have the center subtracted
|
|
386
|
+
RMSDCoreData(const std::vector<double>&a,
|
|
387
|
+
const std::vector<double>&disp,
|
|
388
|
+
const View<Vector> p,
|
|
389
|
+
const std::vector<Vector>&r)
|
|
390
|
+
: creference(0.0,0.0,0.0),
|
|
391
|
+
creference_is_calculated(false),
|
|
392
|
+
creference_is_removed(false),
|
|
393
|
+
cpositions(0.0,0.0,0.0),
|
|
394
|
+
cpositions_is_calculated(false),
|
|
395
|
+
cpositions_is_removed(false),
|
|
396
|
+
retrieve_only_rotation(false),
|
|
397
|
+
positions(p),
|
|
398
|
+
reference(r),
|
|
399
|
+
align(a),
|
|
400
|
+
displace(disp) {}
|
|
401
|
+
|
|
402
|
+
// set the center on the fly without subtracting
|
|
403
|
+
void calcPositionsCenter() {
|
|
404
|
+
plumed_massert(!cpositions_is_calculated,"the center was already calculated");
|
|
405
|
+
cpositions.zero();
|
|
406
|
+
for(unsigned i=0; i<positions.size(); i++) {
|
|
407
|
+
cpositions+=positions[i]*align[i];
|
|
408
|
+
}
|
|
409
|
+
cpositions_is_calculated=true;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
void calcReferenceCenter() {
|
|
413
|
+
plumed_massert(!creference_is_calculated,"the center was already calculated");
|
|
414
|
+
creference.zero();
|
|
415
|
+
for(unsigned i=0; i<reference.size(); i++) {
|
|
416
|
+
creference+=reference[i]*align[i];
|
|
417
|
+
}
|
|
418
|
+
creference_is_calculated=true;
|
|
419
|
+
}
|
|
420
|
+
// assume the center is given externally
|
|
421
|
+
// cppcheck-suppress passedByValue
|
|
422
|
+
void setPositionsCenter(Vector v) {
|
|
423
|
+
plumed_massert(!cpositions_is_calculated,"You are setting the center two times!");
|
|
424
|
+
cpositions=v;
|
|
425
|
+
cpositions_is_calculated=true;
|
|
426
|
+
}
|
|
427
|
+
// cppcheck-suppress passedByValue
|
|
428
|
+
void setReferenceCenter(Vector v) {
|
|
429
|
+
plumed_massert(!creference_is_calculated,"You are setting the center two times!");
|
|
430
|
+
creference=v;
|
|
431
|
+
creference_is_calculated=true;
|
|
432
|
+
}
|
|
433
|
+
// the center is already removed
|
|
434
|
+
void setPositionsCenterIsRemoved(bool t) {
|
|
435
|
+
cpositions_is_removed=t;
|
|
436
|
+
}
|
|
437
|
+
void setReferenceCenterIsRemoved(bool t) {
|
|
438
|
+
creference_is_removed=t;
|
|
439
|
+
}
|
|
440
|
+
bool getPositionsCenterIsRemoved() {
|
|
441
|
+
return cpositions_is_removed;
|
|
442
|
+
}
|
|
443
|
+
bool getReferenceCenterIsRemoved() {
|
|
444
|
+
return creference_is_removed;
|
|
445
|
+
}
|
|
446
|
+
// does the core calc : first thing to call after the constructor:
|
|
447
|
+
// only_rotation=true does not retrieve the derivatives, just retrieve the optimal rotation (the same calc cannot be exploit further)
|
|
448
|
+
void doCoreCalc(bool setSafe,bool setAlEqDis, bool only_rotation=false);
|
|
449
|
+
// do calculation with close structure data structures
|
|
450
|
+
void doCoreCalcWithCloseStructure(bool setSafe,
|
|
451
|
+
bool setAlEqDis,
|
|
452
|
+
const Tensor & rotationPosClose,
|
|
453
|
+
const Tensor & rotationRefClose,
|
|
454
|
+
std::array<std::array<Tensor,3>,3>& drotationPosCloseDrr01);
|
|
455
|
+
// retrieve the distance if required after doCoreCalc
|
|
456
|
+
double getDistance(bool squared);
|
|
457
|
+
// retrieve the derivative of the distance respect to the position
|
|
458
|
+
std::vector<Vector> getDDistanceDPositions();
|
|
459
|
+
// retrieve the derivative of the distance respect to the reference
|
|
460
|
+
std::vector<Vector> getDDistanceDReference();
|
|
461
|
+
// specific version for SOMA calculation (i.e. does not need derivative respect to rotation matrix)
|
|
462
|
+
std::vector<Vector> getDDistanceDReferenceSOMA();
|
|
463
|
+
// get aligned reference onto position
|
|
464
|
+
std::vector<Vector> getAlignedReferenceToPositions();
|
|
465
|
+
// get aligned position onto reference
|
|
466
|
+
std::vector<Vector> getAlignedPositionsToReference();
|
|
467
|
+
// get centered positions
|
|
468
|
+
std::vector<Vector> getCenteredPositions();
|
|
469
|
+
// get centered reference
|
|
470
|
+
std::vector<Vector> getCenteredReference();
|
|
471
|
+
// get center of positions
|
|
472
|
+
Vector getPositionsCenter();
|
|
473
|
+
// get center of reference
|
|
474
|
+
Vector getReferenceCenter();
|
|
475
|
+
// get rotation matrix (reference ->positions)
|
|
476
|
+
Tensor getRotationMatrixReferenceToPositions();
|
|
477
|
+
// get rotation matrix (positions -> reference)
|
|
478
|
+
Tensor getRotationMatrixPositionsToReference();
|
|
479
|
+
// get the derivative of the rotation matrix respect to positions
|
|
480
|
+
// note that the this transformation overlap the reference onto position
|
|
481
|
+
// if inverseTransform=true then aligns the positions onto reference
|
|
482
|
+
Matrix<std::vector<Vector> > getDRotationDPositions( bool inverseTransform=false );
|
|
483
|
+
// get the derivative of the rotation matrix respect to reference
|
|
484
|
+
// note that the this transformation overlap the reference onto position
|
|
485
|
+
// if inverseTransform=true then aligns the positions onto reference
|
|
486
|
+
Matrix<std::vector<Vector> > getDRotationDReference(bool inverseTransform=false );
|
|
487
|
+
const std::array<std::array<Tensor,3>,3>& getDRotationDRr01() const;
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
#endif
|
|
493
|
+
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2012-2023 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_tools_Random_h
|
|
23
|
+
#define __PLUMED_tools_Random_h
|
|
24
|
+
|
|
25
|
+
#include <string>
|
|
26
|
+
#include <vector>
|
|
27
|
+
#include <iosfwd>
|
|
28
|
+
|
|
29
|
+
namespace PLMD {
|
|
30
|
+
|
|
31
|
+
/// \ingroup TOOLBOX
|
|
32
|
+
class Random {
|
|
33
|
+
static constexpr int IA=16807;
|
|
34
|
+
static constexpr int IM=2147483647;
|
|
35
|
+
static constexpr int IQ=127773;
|
|
36
|
+
static constexpr int IR=2836;
|
|
37
|
+
static constexpr int NTAB=32;
|
|
38
|
+
static constexpr int NDIV=(1+(IM-1)/NTAB);
|
|
39
|
+
static constexpr double fact=5.9604644775390625e-8; /* 1 / 2^24 */
|
|
40
|
+
static constexpr double EPS=3.0e-16;
|
|
41
|
+
static constexpr double AM=1.0/IM;
|
|
42
|
+
static constexpr double RNMX=1.0-EPS;
|
|
43
|
+
static const std::string noname;
|
|
44
|
+
bool incPrec;
|
|
45
|
+
bool switchGaussian;
|
|
46
|
+
double saveGaussian;
|
|
47
|
+
int iy;
|
|
48
|
+
int iv[NTAB];
|
|
49
|
+
int idum;
|
|
50
|
+
std::string name;
|
|
51
|
+
public:
|
|
52
|
+
explicit Random(const std::string & title=noname);
|
|
53
|
+
void setSeed(int idum);
|
|
54
|
+
double RandU01();
|
|
55
|
+
double U01();
|
|
56
|
+
double U01d();
|
|
57
|
+
int RandInt(int i);
|
|
58
|
+
void Shuffle(std::vector<unsigned>& vec);
|
|
59
|
+
void WriteStateFull(std::ostream &)const;
|
|
60
|
+
void ReadStateFull (std::istream &);
|
|
61
|
+
void fromString(const std::string & str);
|
|
62
|
+
void toString(std::string & str)const;
|
|
63
|
+
friend std::ostream & operator<<(std::ostream & out,const Random & rng) {
|
|
64
|
+
rng.WriteStateFull(out);
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
friend std::istream & operator>>(std::istream & in,Random & rng) {
|
|
68
|
+
rng.ReadStateFull(in);
|
|
69
|
+
return in;
|
|
70
|
+
}
|
|
71
|
+
double Gaussian();
|
|
72
|
+
void IncreasedPrecis(bool i) {
|
|
73
|
+
incPrec=i;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
#endif
|
|
80
|
+
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2016-2023 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_tools_RootFindingBase_h
|
|
23
|
+
#define __PLUMED_tools_RootFindingBase_h
|
|
24
|
+
|
|
25
|
+
#include "MinimiseBase.h"
|
|
26
|
+
#include "Brent1DRootSearch.h"
|
|
27
|
+
|
|
28
|
+
namespace PLMD {
|
|
29
|
+
|
|
30
|
+
template <class FCLASS>
|
|
31
|
+
class RootFindingBase {
|
|
32
|
+
private:
|
|
33
|
+
/// This is the pointer to the member function in the energy
|
|
34
|
+
/// calculating class that calculates the energy
|
|
35
|
+
typedef double(FCLASS::*engf_pointer)( const std::vector<double>& p, std::vector<double>& der ) const ;
|
|
36
|
+
typedef double(FCLASS::*engfnc_pointer)( const std::vector<double>& p, std::vector<double>& der ) ;
|
|
37
|
+
/// The class that calculates the energy given a position
|
|
38
|
+
FCLASS* myclass_func;
|
|
39
|
+
/// This actually does the search for a root
|
|
40
|
+
void doSearch( const std::vector<double>& dir, std::vector<double>& p, F1dim<FCLASS>& f1dim ) const ;
|
|
41
|
+
public:
|
|
42
|
+
explicit RootFindingBase( FCLASS* funcc ) : myclass_func(funcc) {}
|
|
43
|
+
/// This is the line minimiser
|
|
44
|
+
void linesearch( const std::vector<double>& dir, std::vector<double>& p, engf_pointer myfunc ) const ;
|
|
45
|
+
void lsearch( const std::vector<double>& dir, std::vector<double>& p, engfnc_pointer myfunc ) const ;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
template <class FCLASS>
|
|
49
|
+
void RootFindingBase<FCLASS>::doSearch( const std::vector<double>& dir, std::vector<double>& p, F1dim<FCLASS>& f1dim ) const {
|
|
50
|
+
// Construct an object that will do the line search for the minimum
|
|
51
|
+
Brent1DRootSearch<F1dim<FCLASS> > bb(f1dim);
|
|
52
|
+
|
|
53
|
+
// This does the actual search for the root
|
|
54
|
+
double ax=0.0, xx=1.0;
|
|
55
|
+
bb.bracket( ax, xx, &F1dim<FCLASS>::getEng );
|
|
56
|
+
double xmin=bb.search( &F1dim<FCLASS>::getEng );
|
|
57
|
+
for(unsigned i=0; i<p.size(); ++i) {
|
|
58
|
+
p[i] += xmin*dir[i];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
template <class FCLASS>
|
|
63
|
+
void RootFindingBase<FCLASS>::linesearch( const std::vector<double>& dir, std::vector<double>& p, engf_pointer myfunc ) const {
|
|
64
|
+
// Construct the object that turns points on a line into vectors
|
|
65
|
+
F1dim<FCLASS> f1dim( p, dir, myclass_func, myfunc, NULL );
|
|
66
|
+
// Actually do the search
|
|
67
|
+
doSearch( dir, p, f1dim );
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
template <class FCLASS>
|
|
71
|
+
void RootFindingBase<FCLASS>::lsearch( const std::vector<double>& dir, std::vector<double>& p, engfnc_pointer myfunc ) const {
|
|
72
|
+
// Construct the object that turns points on a line into vectors
|
|
73
|
+
F1dim<FCLASS> f1dim( p, dir, myclass_func, NULL, myfunc );
|
|
74
|
+
// Actually do the search
|
|
75
|
+
doSearch( dir, p, f1dim );
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
#endif
|