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,44 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2020 of Glen Hocky
|
|
3
|
+
|
|
4
|
+
The FISST module is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
The FISST module is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU Lesser General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
15
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
17
|
+
#ifndef __PLUMED_fisst_legendre_rule_fast_h
|
|
18
|
+
#define __PLUMED_fisst_legendre_rule_fast_h
|
|
19
|
+
// taken from:
|
|
20
|
+
// https://people.sc.fsu.edu/~jburkardt/cpp_src/legendre_rule_fast/legendre_rule_fast.html
|
|
21
|
+
//
|
|
22
|
+
# include <cstdlib>
|
|
23
|
+
# include <cmath>
|
|
24
|
+
# include <iostream>
|
|
25
|
+
# include <fstream>
|
|
26
|
+
# include <iomanip>
|
|
27
|
+
# include <ctime>
|
|
28
|
+
# include <cstring>
|
|
29
|
+
|
|
30
|
+
namespace PLMD {
|
|
31
|
+
namespace fisst {
|
|
32
|
+
|
|
33
|
+
void legendre_compute_glr ( int n, double x[], double w[] );
|
|
34
|
+
void legendre_compute_glr0 ( int n, double *p, double *pp );
|
|
35
|
+
void legendre_compute_glr1 ( int n, double *roots, double *ders );
|
|
36
|
+
void legendre_compute_glr2 ( double p, int n, double *roots, double *ders );
|
|
37
|
+
void rescale ( double a, double b, int n, double x[], double w[] );
|
|
38
|
+
double rk2_leg ( double t, double tn, double x, int n );
|
|
39
|
+
double ts_mult ( double *u, double h, int n );
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#endif
|
|
@@ -0,0 +1,54 @@
|
|
|
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_function_Custom_h
|
|
23
|
+
#define __PLUMED_function_Custom_h
|
|
24
|
+
|
|
25
|
+
#include "FunctionSetup.h"
|
|
26
|
+
#include "../tools/LeptonCall.h"
|
|
27
|
+
|
|
28
|
+
namespace PLMD {
|
|
29
|
+
namespace function {
|
|
30
|
+
|
|
31
|
+
class Custom {
|
|
32
|
+
public:
|
|
33
|
+
std::string func;
|
|
34
|
+
std::vector<std::string> var;
|
|
35
|
+
bool zerowhenallzero;
|
|
36
|
+
LeptonCall function;
|
|
37
|
+
std::vector<unsigned> check_multiplication_vars;
|
|
38
|
+
static void registerKeywords( Keywords& keys );
|
|
39
|
+
static std::string getFunctionString( const std::string& func );
|
|
40
|
+
static void read( Custom& f, ActionWithArguments* action, FunctionOptions& options );
|
|
41
|
+
static void calc( const Custom& func, bool noderiv, const View<const double>& args, FunctionOutput& funcout );
|
|
42
|
+
Custom& operator=( const Custom& m ) {
|
|
43
|
+
func = m.func;
|
|
44
|
+
var = m.var;
|
|
45
|
+
function.set( func, var, NULL );
|
|
46
|
+
zerowhenallzero = m.zerowhenallzero;
|
|
47
|
+
check_multiplication_vars = m.check_multiplication_vars;
|
|
48
|
+
return *this;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
#endif
|
|
@@ -0,0 +1,85 @@
|
|
|
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_function_Function_h
|
|
23
|
+
#define __PLUMED_function_Function_h
|
|
24
|
+
|
|
25
|
+
#include "../core/ActionWithValue.h"
|
|
26
|
+
#include "../core/ActionWithArguments.h"
|
|
27
|
+
|
|
28
|
+
namespace PLMD {
|
|
29
|
+
namespace function {
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
\ingroup INHERIT
|
|
33
|
+
This is the abstract base class to use for implementing new CV function, within it there is
|
|
34
|
+
\ref AddingAFunction "information" as to how to go about implementing a new function.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
class Function:
|
|
38
|
+
public ActionWithValue,
|
|
39
|
+
public ActionWithArguments {
|
|
40
|
+
protected:
|
|
41
|
+
void setDerivative(int,double);
|
|
42
|
+
void setDerivative(Value*,int,double);
|
|
43
|
+
//overriding explicitly the two functions avoids the [-Woverloaded-virtual] warning
|
|
44
|
+
/// the shape argument will be ignored
|
|
45
|
+
void addValueWithDerivatives( const std::vector<std::size_t>& =std::vector<std::size_t>() ) override;
|
|
46
|
+
/// the shape will be ignored
|
|
47
|
+
void addComponentWithDerivatives( const std::string& valname, const std::vector<std::size_t>& =std::vector<std::size_t>() )override;
|
|
48
|
+
public:
|
|
49
|
+
explicit Function(const ActionOptions&);
|
|
50
|
+
virtual ~Function() {}
|
|
51
|
+
double getArgument( const unsigned& iarg );
|
|
52
|
+
void apply() override;
|
|
53
|
+
static void registerKeywords(Keywords&);
|
|
54
|
+
unsigned getNumberOfDerivatives() override;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
inline
|
|
58
|
+
void Function::setDerivative(Value*v,int i,double d) {
|
|
59
|
+
v->addDerivative(i,d);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
inline
|
|
63
|
+
void Function::setDerivative(int i,double d) {
|
|
64
|
+
setDerivative(getPntrToValue(),i,d);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
inline
|
|
68
|
+
unsigned Function::getNumberOfDerivatives() {
|
|
69
|
+
unsigned narg=0;
|
|
70
|
+
for(unsigned i=0; i<getNumberOfArguments(); ++i) {
|
|
71
|
+
narg += getPntrToArgument(i)->getNumberOfStoredValues();
|
|
72
|
+
}
|
|
73
|
+
return narg;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
inline
|
|
77
|
+
double Function::getArgument( const unsigned& iarg ) {
|
|
78
|
+
return getPntrToArgument(iarg)->get();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#endif
|
|
85
|
+
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2011-2020 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_function_FunctionOfMatrix_h
|
|
23
|
+
#define __PLUMED_function_FunctionOfMatrix_h
|
|
24
|
+
|
|
25
|
+
#include "../core/ActionWithVector.h"
|
|
26
|
+
#include "../core/ParallelTaskManager.h"
|
|
27
|
+
#include "FunctionSetup.h"
|
|
28
|
+
#include "FunctionOfVector.h"
|
|
29
|
+
#include "Custom.h"
|
|
30
|
+
|
|
31
|
+
namespace PLMD {
|
|
32
|
+
namespace function {
|
|
33
|
+
|
|
34
|
+
template <class T>
|
|
35
|
+
class FunctionOfMatrix : public ActionWithVector {
|
|
36
|
+
public:
|
|
37
|
+
using input_type = FunctionData<T>;
|
|
38
|
+
using PTM = ParallelTaskManager<FunctionOfMatrix<T>>;
|
|
39
|
+
private:
|
|
40
|
+
/// The parallel task manager
|
|
41
|
+
PTM taskmanager;
|
|
42
|
+
/// Set equal to one if we are doing EvaluateGridFunction
|
|
43
|
+
unsigned argstart;
|
|
44
|
+
/// Number of scalars that appear in the input
|
|
45
|
+
std::size_t nscalars;
|
|
46
|
+
/// Used to hold the list of tasks we are running
|
|
47
|
+
std::vector<unsigned> active_tasks;
|
|
48
|
+
/// Get the number of arguments the function uses
|
|
49
|
+
unsigned getNumberOfFunctionArguments() const ;
|
|
50
|
+
public:
|
|
51
|
+
static void registerKeywords(Keywords&);
|
|
52
|
+
explicit FunctionOfMatrix(const ActionOptions&);
|
|
53
|
+
/// Get the label to write in the graph
|
|
54
|
+
std::string writeInGraph() const override ;
|
|
55
|
+
/// Get the number of derivatives for this action
|
|
56
|
+
unsigned getNumberOfDerivatives() override ;
|
|
57
|
+
/// Resize the matrices
|
|
58
|
+
void prepare() override ;
|
|
59
|
+
void calculate() override ;
|
|
60
|
+
void getNumberOfTasks( unsigned& ntasks ) override ;
|
|
61
|
+
std::vector<unsigned>& getListOfActiveTasks( ActionWithVector* action ) override ;
|
|
62
|
+
void getInputData( std::vector<double>& inputdata ) const override ;
|
|
63
|
+
static void performTask( std::size_t task_index,
|
|
64
|
+
const FunctionData<T>& actiondata,
|
|
65
|
+
ParallelActionsInput& input,
|
|
66
|
+
ParallelActionsOutput& output );
|
|
67
|
+
/// Add some forces
|
|
68
|
+
void applyNonZeroRankForces( std::vector<double>& outforces ) override ;
|
|
69
|
+
/// Get the indices of the forces
|
|
70
|
+
static int getNumberOfValuesPerTask( std::size_t task_index, const FunctionData<T>& actiondata );
|
|
71
|
+
static void getForceIndices( std::size_t task_index,
|
|
72
|
+
std::size_t colno,
|
|
73
|
+
std::size_t ntotal_force,
|
|
74
|
+
const FunctionData<T>& actiondata,
|
|
75
|
+
const ParallelActionsInput& input,
|
|
76
|
+
ForceIndexHolder force_indices );
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
template <class T>
|
|
80
|
+
void FunctionOfMatrix<T>::registerKeywords(Keywords& keys ) {
|
|
81
|
+
ActionWithVector::registerKeywords(keys);
|
|
82
|
+
std::string name = keys.getDisplayName();
|
|
83
|
+
std::size_t und=name.find("_MATRIX");
|
|
84
|
+
keys.setDisplayName( name.substr(0,und) );
|
|
85
|
+
keys.addInputKeyword("compulsory","ARG","scalar/matrix","the labels of the scalar and matrices that on which the function is being calculated elementwise");
|
|
86
|
+
keys.addInputKeyword("optional","MASK","matrix","a matrix that is used to used to determine which elements of the output matrix to compute");
|
|
87
|
+
keys.add("hidden","NO_ACTION_LOG","suppresses printing from action on the log");
|
|
88
|
+
keys.reserve("compulsory","PERIODIC","if the output of your function is periodic then you should specify the periodicity of the function. If the output is not periodic you must state this using PERIODIC=NO");
|
|
89
|
+
T::registerKeywords( keys );
|
|
90
|
+
if( keys.getDisplayName()=="SUM" ) {
|
|
91
|
+
keys.setValueDescription("scalar","the sum of all the elements in the input matrix");
|
|
92
|
+
} else if( keys.getDisplayName()=="HIGHEST" ) {
|
|
93
|
+
keys.setValueDescription("scalar","the largest element of the input matrix");
|
|
94
|
+
} else if( keys.getDisplayName()=="LOWEST" ) {
|
|
95
|
+
keys.setValueDescription("scalar","the smallest element in the input matrix");
|
|
96
|
+
} else if( keys.outputComponentExists(".#!value") ) {
|
|
97
|
+
keys.setValueDescription("matrix","the matrix obtained by doing an element-wise application of " + keys.getOutputComponentDescription(".#!value") + " to the input matrix");
|
|
98
|
+
}
|
|
99
|
+
PTM::registerKeywords( keys );
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
template <class T>
|
|
103
|
+
unsigned FunctionOfMatrix<T>::getNumberOfFunctionArguments() const {
|
|
104
|
+
unsigned nargs=getNumberOfArguments();
|
|
105
|
+
if( getNumberOfMasks()>0 ) {
|
|
106
|
+
return nargs - getNumberOfMasks();
|
|
107
|
+
}
|
|
108
|
+
return nargs;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
template <class T>
|
|
112
|
+
FunctionOfMatrix<T>::FunctionOfMatrix(const ActionOptions&ao):
|
|
113
|
+
Action(ao),
|
|
114
|
+
ActionWithVector(ao),
|
|
115
|
+
taskmanager(this),
|
|
116
|
+
argstart(0),
|
|
117
|
+
nscalars(0) {
|
|
118
|
+
// Check if first argument is grid
|
|
119
|
+
if( getPntrToArgument(0)->getRank()>0 && getPntrToArgument(0)->hasDerivatives() ) {
|
|
120
|
+
argstart=1;
|
|
121
|
+
}
|
|
122
|
+
if( getNumberOfArguments()==argstart ) {
|
|
123
|
+
error("no arguments specified");
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if( getPntrToArgument(argstart)->getRank()!=2 ) {
|
|
127
|
+
error("first argument to this action must be a matrix");
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Get the number of arguments
|
|
131
|
+
unsigned nargs = getNumberOfArguments();
|
|
132
|
+
int nmasks = getNumberOfMasks();
|
|
133
|
+
if( nargs>=static_cast<unsigned>(nmasks) && nmasks>0 ) {
|
|
134
|
+
nargs = nargs - nmasks;
|
|
135
|
+
}
|
|
136
|
+
// Get the shape of the output
|
|
137
|
+
std::vector<std::size_t> shape( 2 );
|
|
138
|
+
shape[0] = getPntrToArgument(argstart)->getShape()[0];
|
|
139
|
+
shape[1] = getPntrToArgument(argstart)->getShape()[1];
|
|
140
|
+
for(unsigned i=argstart+1; i<nargs; ++i) {
|
|
141
|
+
if( getPntrToArgument(i)->getRank()==0 ) {
|
|
142
|
+
nscalars++;
|
|
143
|
+
} else if( getPntrToArgument(i)->getRank()==2 ) {
|
|
144
|
+
if( getPntrToArgument(i)->getShape()[0]!=shape[0] || getPntrToArgument(i)->getShape()[1]!=shape[1] ) {
|
|
145
|
+
error("mismatch between sizes of input arguments");
|
|
146
|
+
} else if( nscalars>0 ) {
|
|
147
|
+
error("scalars should be specified in argument list after all matrices");
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
error("input arguments should be matrices or scalars");
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if( nmasks>0 ) {
|
|
154
|
+
if( getPntrToArgument(getNumberOfArguments()-nmasks)->getShape()[0]!=shape[0] ||
|
|
155
|
+
getPntrToArgument(getNumberOfArguments()-nmasks)->getShape()[1]!=shape[1] ) {
|
|
156
|
+
error("input mask has wrong size");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Check if the output matrix is symmetric
|
|
161
|
+
bool symmetric=true;
|
|
162
|
+
for(unsigned i=argstart; i<getNumberOfArguments(); ++i) {
|
|
163
|
+
if( getPntrToArgument(i)->getRank()==2 ) {
|
|
164
|
+
if( !getPntrToArgument(i)->isSymmetric() ) {
|
|
165
|
+
symmetric=false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Setup the values
|
|
170
|
+
// Get the function data from the parallel task manager, to avoid copies
|
|
171
|
+
auto & myfunc = taskmanager.getActionInput();
|
|
172
|
+
myfunc.argstart = argstart;
|
|
173
|
+
myfunc.nscalars = nscalars;
|
|
174
|
+
FunctionData<T>::setup( myfunc.f, keywords.getOutputComponents(), shape, false, this );
|
|
175
|
+
// Copy the fact that this is a symmetric matrix if the input matrices are all symmetric
|
|
176
|
+
for(unsigned i=0; i<getNumberOfComponents(); ++i) {
|
|
177
|
+
getPntrToComponent(i)->setSymmetric( symmetric );
|
|
178
|
+
}
|
|
179
|
+
taskmanager.setupParallelTaskManager( getNumberOfFunctionArguments() - argstart,
|
|
180
|
+
nscalars );
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
template <class T>
|
|
184
|
+
std::string FunctionOfMatrix<T>::writeInGraph() const {
|
|
185
|
+
std::size_t und = getName().find_last_of("_");
|
|
186
|
+
return getName().substr(0,und);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
template <class T>
|
|
190
|
+
unsigned FunctionOfMatrix<T>::getNumberOfDerivatives() {
|
|
191
|
+
unsigned nder=0;
|
|
192
|
+
for(unsigned i=argstart; i<getNumberOfFunctionArguments(); ++i) {
|
|
193
|
+
nder += getPntrToArgument(i)->getNumberOfStoredValues();
|
|
194
|
+
}
|
|
195
|
+
return nder;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
template <class T>
|
|
199
|
+
void FunctionOfMatrix<T>::prepare() {
|
|
200
|
+
std::vector<std::size_t> shape(getPntrToArgument(argstart)->getShape());
|
|
201
|
+
for(unsigned i=0; i<getNumberOfComponents(); ++i) {
|
|
202
|
+
Value* myval = getPntrToComponent(i);
|
|
203
|
+
if( myval->getRank()==2 && (myval->getShape()[0]!=shape[0] || myval->getShape()[1]!=shape[1]) ) {
|
|
204
|
+
myval->setShape(shape);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
ActionWithVector::prepare();
|
|
208
|
+
active_tasks.resize(0);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
template <class T>
|
|
212
|
+
void FunctionOfMatrix<T>::getNumberOfTasks( unsigned& ntasks ) {
|
|
213
|
+
ntasks=getPntrToComponent(0)->getNumberOfStoredValues();
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
template <class T>
|
|
217
|
+
std::vector<unsigned>& FunctionOfMatrix<T>::getListOfActiveTasks( ActionWithVector* action ) {
|
|
218
|
+
if( active_tasks.size()>0 ) {
|
|
219
|
+
return active_tasks;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
Value* myarg = NULL;
|
|
223
|
+
if( getNumberOfMasks()>0 ) {
|
|
224
|
+
myarg = getPntrToArgument(getNumberOfArguments()-getNumberOfMasks());
|
|
225
|
+
} else {
|
|
226
|
+
myarg = getPntrToArgument(argstart);
|
|
227
|
+
}
|
|
228
|
+
unsigned atsize = 0;
|
|
229
|
+
unsigned nrows = myarg->getShape()[0];
|
|
230
|
+
for(unsigned i=0; i<nrows; ++i) {
|
|
231
|
+
atsize += myarg->getRowLength(i);
|
|
232
|
+
}
|
|
233
|
+
active_tasks.resize( atsize );
|
|
234
|
+
|
|
235
|
+
for(unsigned i=0, base=0,k=0; i<nrows; ++i) {
|
|
236
|
+
unsigned ncols = myarg->getRowLength(i);
|
|
237
|
+
for(unsigned j=0; j<ncols; ++j) {
|
|
238
|
+
active_tasks[k] = base+j;
|
|
239
|
+
++k;
|
|
240
|
+
}
|
|
241
|
+
base += myarg->getNumberOfColumns();
|
|
242
|
+
}
|
|
243
|
+
if( getNumberOfMasks()>0 && doNotCalculateDerivatives() ) {
|
|
244
|
+
return active_tasks;
|
|
245
|
+
}
|
|
246
|
+
// All the matrices input have to have the same sparsity pattern.
|
|
247
|
+
// I can do everything I want to do with this limitation. If
|
|
248
|
+
// anyone wants to make this smarter in the future they can
|
|
249
|
+
#ifndef DNDEBUG
|
|
250
|
+
for(unsigned k=argstart; k<getNumberOfArguments(); ++k) {
|
|
251
|
+
if( getPntrToArgument(k)->getRank()!=2 ) {
|
|
252
|
+
continue ;
|
|
253
|
+
}
|
|
254
|
+
if( getNumberOfMasks()>0 && getPntrToArgument(k)->isConstant() ) {
|
|
255
|
+
continue ;
|
|
256
|
+
}
|
|
257
|
+
for(unsigned i=0; i<nrows; ++i) {
|
|
258
|
+
unsigned ncols = myarg->getRowLength(i);
|
|
259
|
+
if( getNumberOfMasks()>0 && ncols==0 ) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
plumed_massert( ncols==getPntrToArgument(k)->getRowLength(i), "failing in " + getLabel() );
|
|
263
|
+
for(unsigned j=0; j<ncols; ++j) {
|
|
264
|
+
plumed_assert( myarg->getRowIndex(i,j)==getPntrToArgument(k)->getRowIndex(i,j) );
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
#endif
|
|
269
|
+
return active_tasks;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
template <class T>
|
|
273
|
+
void FunctionOfMatrix<T>::getInputData( std::vector<double>& inputdata ) const {
|
|
274
|
+
int nmasks = getNumberOfMasks();
|
|
275
|
+
unsigned nargs = getNumberOfFunctionArguments();
|
|
276
|
+
|
|
277
|
+
const Value* myval = getConstPntrToComponent(0);
|
|
278
|
+
std::size_t ntasks = myval->getNumberOfStoredValues();
|
|
279
|
+
std::size_t ndata = static_cast<std::size_t>(nargs-argstart)*ntasks;
|
|
280
|
+
if( inputdata.size()!=ndata ) {
|
|
281
|
+
inputdata.resize( ndata );
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
for(unsigned j=argstart; j<nargs; ++j) {
|
|
285
|
+
const Value* jarg = getPntrToArgument(j);
|
|
286
|
+
if( jarg->getRank()==0 ) {
|
|
287
|
+
double val = jarg->get();
|
|
288
|
+
for(unsigned i=0; i<myval->getShape()[0]; ++i) {
|
|
289
|
+
unsigned colbase=i*myval->getNumberOfColumns();
|
|
290
|
+
for(unsigned k=0; k<myval->getRowLength(i); ++k) {
|
|
291
|
+
inputdata[(nargs-argstart)*(colbase+k) + j-argstart] = val;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
} else if( nmasks>0 ) {
|
|
295
|
+
for(unsigned i=0; i<myval->getShape()[0]; ++i) {
|
|
296
|
+
unsigned jcolbase = i*jarg->getShape()[1];
|
|
297
|
+
unsigned vcolbase = i*myval->getNumberOfColumns();
|
|
298
|
+
for(unsigned k=0; k<myval->getRowLength(i); ++k) {
|
|
299
|
+
inputdata[(nargs-argstart)*(vcolbase+k) + j-argstart] = jarg->get(jcolbase+myval->getRowIndex(i,k),true);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
} else {
|
|
303
|
+
for(unsigned i=0; i<jarg->getShape()[0]; ++i) {
|
|
304
|
+
unsigned colbase=i*jarg->getNumberOfColumns();
|
|
305
|
+
for(unsigned k=0; k<jarg->getRowLength(i); ++k) {
|
|
306
|
+
inputdata[(nargs-argstart)*(colbase+k) + j-argstart] = jarg->get(colbase+k,false);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
template <class T>
|
|
314
|
+
void FunctionOfMatrix<T>::calculate() {
|
|
315
|
+
Value* myarg = NULL;
|
|
316
|
+
if( getNumberOfMasks()>0 ) {
|
|
317
|
+
myarg = getPntrToArgument(getNumberOfArguments()-getNumberOfMasks());
|
|
318
|
+
} else {
|
|
319
|
+
myarg = getPntrToArgument(argstart);
|
|
320
|
+
}
|
|
321
|
+
// Copy bookeeping arrays from input matrices to output matrices
|
|
322
|
+
for(unsigned i=0; i<getNumberOfComponents(); ++i) {
|
|
323
|
+
getPntrToComponent(i)->copyBookeepingArrayFromArgument( myarg );
|
|
324
|
+
}
|
|
325
|
+
taskmanager.setupParallelTaskManager( getNumberOfFunctionArguments()-argstart, nscalars );
|
|
326
|
+
taskmanager.runAllTasks();
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
template <class T>
|
|
330
|
+
void FunctionOfMatrix<T>::performTask( std::size_t task_index,
|
|
331
|
+
const FunctionData<T>& actiondata,
|
|
332
|
+
ParallelActionsInput& input,
|
|
333
|
+
ParallelActionsOutput& output ) {
|
|
334
|
+
auto funcout = FunctionOutput::create( input.ncomponents,
|
|
335
|
+
output.values.data(),
|
|
336
|
+
input.nderivatives_per_scalar,
|
|
337
|
+
output.derivatives.data() );
|
|
338
|
+
T::calc( actiondata.f,
|
|
339
|
+
input.noderiv,
|
|
340
|
+
View<const double>( input.inputdata + task_index*input.nderivatives_per_scalar,
|
|
341
|
+
input.nderivatives_per_scalar ),
|
|
342
|
+
funcout );
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
template <class T>
|
|
346
|
+
void FunctionOfMatrix<T>::applyNonZeroRankForces( std::vector<double>& outforces ) {
|
|
347
|
+
taskmanager.applyForces( outforces );
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
template <class T>
|
|
351
|
+
int FunctionOfMatrix<T>::getNumberOfValuesPerTask( std::size_t task_index, const FunctionData<T>& actiondata ) {
|
|
352
|
+
return 1;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
template <class T>
|
|
356
|
+
void FunctionOfMatrix<T>::getForceIndices( std::size_t task_index,
|
|
357
|
+
std::size_t colno,
|
|
358
|
+
std::size_t ntotal_force,
|
|
359
|
+
const FunctionData<T>& actiondata,
|
|
360
|
+
const ParallelActionsInput& input,
|
|
361
|
+
ForceIndexHolder force_indices ) {
|
|
362
|
+
// The force indices are found in the same way as in FunctionOfVector so we reuse that function here
|
|
363
|
+
FunctionOfVector<T>::getForceIndices( task_index, colno, ntotal_force, actiondata, input, force_indices );
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
#endif
|
|
@@ -0,0 +1,135 @@
|
|
|
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_function_FunctionOfScalar_h
|
|
23
|
+
#define __PLUMED_function_FunctionOfScalar_h
|
|
24
|
+
|
|
25
|
+
#include "Function.h"
|
|
26
|
+
#include "FunctionSetup.h"
|
|
27
|
+
|
|
28
|
+
namespace PLMD {
|
|
29
|
+
namespace function {
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
\ingroup INHERIT
|
|
33
|
+
This is the abstract base class to use for implementing new CV function, within it there is
|
|
34
|
+
\ref AddingAFunction "information" as to how to go about implementing a new function.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
template <class T>
|
|
38
|
+
class FunctionOfScalar : public Function {
|
|
39
|
+
private:
|
|
40
|
+
/// Set equal to one if we are doing evaluateGridFunction
|
|
41
|
+
unsigned argstart;
|
|
42
|
+
/// The function that is being computed
|
|
43
|
+
T myfunc;
|
|
44
|
+
public:
|
|
45
|
+
explicit FunctionOfScalar(const ActionOptions&);
|
|
46
|
+
virtual ~FunctionOfScalar() {}
|
|
47
|
+
/// Get the label to write in the graph
|
|
48
|
+
std::string writeInGraph() const override ;
|
|
49
|
+
std::string getOutputComponentDescription( const std::string& cname, const Keywords& keys ) const override ;
|
|
50
|
+
void calculate() override;
|
|
51
|
+
static void registerKeywords(Keywords&);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
template <class T>
|
|
55
|
+
void FunctionOfScalar<T>::registerKeywords(Keywords& keys) {
|
|
56
|
+
Function::registerKeywords(keys);
|
|
57
|
+
std::string name = keys.getDisplayName();
|
|
58
|
+
std::size_t und=name.find("_SCALAR");
|
|
59
|
+
keys.setDisplayName( name.substr(0,und) );
|
|
60
|
+
keys.add("hidden","NO_ACTION_LOG","suppresses printing from action on the log");
|
|
61
|
+
T::registerKeywords( keys );
|
|
62
|
+
if( keys.getDisplayName()=="SUM" ) {
|
|
63
|
+
keys.setValueDescription("scalar","the sum of all the input arguments");
|
|
64
|
+
} else if( keys.getDisplayName()=="MEAN" ) {
|
|
65
|
+
keys.setValueDescription("scalar","the mean of all the input arguments");
|
|
66
|
+
} else if( keys.getDisplayName()=="EVALUATE_FUNCTION_FROM_GRID" ) {
|
|
67
|
+
keys.addInputKeyword("compulsory","ARG","scalar/grid","");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
template <class T>
|
|
72
|
+
FunctionOfScalar<T>::FunctionOfScalar(const ActionOptions&ao):
|
|
73
|
+
Action(ao),
|
|
74
|
+
Function(ao),
|
|
75
|
+
argstart(0) {
|
|
76
|
+
// Check if first argument is grid
|
|
77
|
+
if( getPntrToArgument(0)->getRank()>0 && getPntrToArgument(0)->hasDerivatives() ) {
|
|
78
|
+
argstart=1;
|
|
79
|
+
}
|
|
80
|
+
// Create the values to hold the output
|
|
81
|
+
std::vector<std::size_t> shape;
|
|
82
|
+
FunctionData<T>::setup( myfunc, keywords.getOutputComponents(), shape, true, this );
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
template <class T>
|
|
86
|
+
std::string FunctionOfScalar<T>::writeInGraph() const {
|
|
87
|
+
std::size_t und = getName().find_last_of("_");
|
|
88
|
+
return getName().substr(0,und);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
template <class T>
|
|
92
|
+
std::string FunctionOfScalar<T>::getOutputComponentDescription( const std::string& cname, const Keywords& keys ) const {
|
|
93
|
+
if( getName().find("SORT")==std::string::npos ) {
|
|
94
|
+
return ActionWithValue::getOutputComponentDescription( cname, keys );
|
|
95
|
+
}
|
|
96
|
+
return "the " + cname + "th largest of the input scalars";
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
template <class T>
|
|
100
|
+
void FunctionOfScalar<T>::calculate() {
|
|
101
|
+
std::vector<double> args( getNumberOfArguments() - argstart );
|
|
102
|
+
for(unsigned i=argstart; i<getNumberOfArguments(); ++i) {
|
|
103
|
+
args[i-argstart]=getPntrToArgument(i)->get();
|
|
104
|
+
}
|
|
105
|
+
std::vector<double> vals( getNumberOfComponents() ), deriv( getNumberOfComponents()*args.size() );
|
|
106
|
+
auto funcout = FunctionOutput::create( getNumberOfComponents(),
|
|
107
|
+
vals.data(),
|
|
108
|
+
args.size(),
|
|
109
|
+
deriv.data() );
|
|
110
|
+
T::calc( myfunc,
|
|
111
|
+
doNotCalculateDerivatives(),
|
|
112
|
+
View<const double>(args.data(),args.size()),
|
|
113
|
+
funcout );
|
|
114
|
+
for(unsigned i=0; i<vals.size(); ++i) {
|
|
115
|
+
copyOutput(i)->set(vals[i]);
|
|
116
|
+
}
|
|
117
|
+
if( doNotCalculateDerivatives() ) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
unsigned dstart = 0;
|
|
121
|
+
for(unsigned i=0; i<argstart; ++i) {
|
|
122
|
+
dstart += getPntrToArgument(i)->getNumberOfStoredValues();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
for(unsigned i=0; i<vals.size(); ++i) {
|
|
126
|
+
Value* val = getPntrToComponent(i);
|
|
127
|
+
for(unsigned j=0; j<args.size(); ++j) {
|
|
128
|
+
setDerivative( val, dstart+j, funcout.derivs[i][j] );
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
#endif
|