hillclimber 0.1.6__cp313-cp313-macosx_15_0_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +468 -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
- 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.dylib +0 -0
- plumed/_lib/lib/libplumed.dylib +0 -0
- plumed/_lib/lib/libplumedKernel.dylib +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 +181 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake +6 -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 +3 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc +6 -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 +3 -0
- plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
- plumed/_plumed_core.cpython-311-darwin.so +0 -0
- plumed/_plumed_core.cpython-312-darwin.so +0 -0
- plumed/_plumed_core.cpython-313-darwin.so +0 -0
- plumedCommunications.cpython-311-darwin.so +0 -0
- plumedCommunications.cpython-312-darwin.so +0 -0
- plumedCommunications.cpython-313-darwin.so +0 -0
- plumedCommunications.pyi +431 -0
|
@@ -0,0 +1,165 @@
|
|
|
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_FunctionWithSingleArgument_h
|
|
23
|
+
#define __PLUMED_function_FunctionWithSingleArgument_h
|
|
24
|
+
|
|
25
|
+
#include "../core/ActionWithArguments.h"
|
|
26
|
+
#include "../core/ActionWithValue.h"
|
|
27
|
+
#include "../core/ActionRegister.h"
|
|
28
|
+
#include "FunctionSetup.h"
|
|
29
|
+
|
|
30
|
+
namespace PLMD {
|
|
31
|
+
namespace function {
|
|
32
|
+
|
|
33
|
+
template <class T>
|
|
34
|
+
class FunctionWithSingleArgument :
|
|
35
|
+
public ActionWithValue,
|
|
36
|
+
public ActionWithArguments {
|
|
37
|
+
private:
|
|
38
|
+
T f;
|
|
39
|
+
bool ismatrix;
|
|
40
|
+
public:
|
|
41
|
+
static void registerKeywords(Keywords& keys);
|
|
42
|
+
explicit FunctionWithSingleArgument(const ActionOptions&);
|
|
43
|
+
/// Get the label to write in the graph
|
|
44
|
+
std::string writeInGraph() const override {
|
|
45
|
+
std::size_t und = getName().find_last_of("_");
|
|
46
|
+
return getName().substr(0,und);
|
|
47
|
+
}
|
|
48
|
+
unsigned getNumberOfDerivatives() override ;
|
|
49
|
+
void calculate() override ;
|
|
50
|
+
void apply() override ;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
template <class T>
|
|
54
|
+
void FunctionWithSingleArgument<T>::registerKeywords(Keywords& keys) {
|
|
55
|
+
Action::registerKeywords(keys);
|
|
56
|
+
ActionWithValue::registerKeywords(keys);
|
|
57
|
+
ActionWithArguments::registerKeywords(keys);
|
|
58
|
+
std::string name = keys.getDisplayName();
|
|
59
|
+
std::size_t und=name.find("_ONEARG");
|
|
60
|
+
keys.setDisplayName( name.substr(0,und) );
|
|
61
|
+
keys.addInputKeyword("compulsory","ARG","vector/matrix","the vector/matrix that is being used in input");
|
|
62
|
+
T::registerKeywords( keys );
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
template <class T>
|
|
66
|
+
FunctionWithSingleArgument<T>::FunctionWithSingleArgument(const ActionOptions&ao):
|
|
67
|
+
Action(ao),
|
|
68
|
+
ActionWithValue(ao),
|
|
69
|
+
ActionWithArguments(ao),
|
|
70
|
+
ismatrix(false) {
|
|
71
|
+
|
|
72
|
+
if( getNumberOfArguments()!=1 ) {
|
|
73
|
+
error("should only be one argument in input for this action");
|
|
74
|
+
}
|
|
75
|
+
ismatrix = getPntrToArgument(0)->getRank()==2 && !getPntrToArgument(0)->hasDerivatives();
|
|
76
|
+
|
|
77
|
+
std::vector<std::size_t> shape;
|
|
78
|
+
FunctionData<T>::setup( f, keywords.getOutputComponents(), shape, true, this );
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
template <class T>
|
|
82
|
+
unsigned FunctionWithSingleArgument<T>::getNumberOfDerivatives() {
|
|
83
|
+
return getPntrToArgument(0)->getNumberOfStoredValues();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
template <class T>
|
|
87
|
+
void FunctionWithSingleArgument<T>::calculate() {
|
|
88
|
+
const Value* myarg = getPntrToArgument(0);
|
|
89
|
+
std::vector<double> args( myarg->getNumberOfStoredValues() );
|
|
90
|
+
if( ismatrix ) {
|
|
91
|
+
unsigned nvals = 0;
|
|
92
|
+
for(unsigned i=0; i<myarg->getShape()[0]; ++i) {
|
|
93
|
+
nvals += myarg->getRowLength(i);
|
|
94
|
+
}
|
|
95
|
+
args.resize( nvals );
|
|
96
|
+
unsigned k=0;
|
|
97
|
+
unsigned ncols = myarg->getNumberOfColumns();
|
|
98
|
+
for(unsigned i=0; i<myarg->getShape()[0]; ++i) {
|
|
99
|
+
for(unsigned j=0; j<myarg->getRowLength(i); ++j) {
|
|
100
|
+
args[k] = myarg->get(i*ncols + j, false);
|
|
101
|
+
++k;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
for(unsigned i=0; i<args.size(); ++i) {
|
|
106
|
+
args[i] = myarg->get( i );
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
std::vector<double> vals( getNumberOfComponents() ), deriv( getNumberOfComponents()*args.size() );
|
|
110
|
+
auto funcout = FunctionOutput::create( getNumberOfComponents(),
|
|
111
|
+
vals.data(),
|
|
112
|
+
args.size(),
|
|
113
|
+
deriv.data() );
|
|
114
|
+
T::calc( f,
|
|
115
|
+
doNotCalculateDerivatives(),
|
|
116
|
+
View<const double>(args.data(), args.size()),
|
|
117
|
+
funcout );
|
|
118
|
+
for(unsigned i=0; i<getNumberOfComponents(); ++i) {
|
|
119
|
+
Value* myval=getPntrToComponent(i);
|
|
120
|
+
myval->set( vals[i] );
|
|
121
|
+
|
|
122
|
+
if( doNotCalculateDerivatives() ) {
|
|
123
|
+
continue ;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
for(unsigned j=0; j<args.size(); ++j) {
|
|
127
|
+
myval->setDerivative( j, funcout.derivs[i][j] );
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
template <class T>
|
|
133
|
+
void FunctionWithSingleArgument<T>::apply() {
|
|
134
|
+
if( !getPntrToComponent(0)->forcesWereAdded() ) {
|
|
135
|
+
return ;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
Value* myarg = getPntrToArgument(0);
|
|
139
|
+
if( ismatrix ) {
|
|
140
|
+
for(unsigned i=0; i<getNumberOfComponents(); ++i) {
|
|
141
|
+
unsigned k=0;
|
|
142
|
+
const Value* myval = getPntrToComponent(i);
|
|
143
|
+
double force = myval->getForce();
|
|
144
|
+
unsigned ncols = myarg->getNumberOfColumns();
|
|
145
|
+
for(unsigned n=0; n<myarg->getShape()[0]; ++n) {
|
|
146
|
+
for(unsigned j=0; j<myarg->getRowLength(i); ++j) {
|
|
147
|
+
myarg->addForce( n*ncols+j, force*myval->getDerivative(k), false );
|
|
148
|
+
++k;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
} else {
|
|
153
|
+
for(unsigned i=0; i<getNumberOfComponents(); ++i) {
|
|
154
|
+
const Value* myval = getPntrToComponent(i);
|
|
155
|
+
double force = myval->getForce();
|
|
156
|
+
for(unsigned j=0; j<myarg->getNumberOfStoredValues(); ++j) {
|
|
157
|
+
myarg->addForce( j, force*myval->getDerivative(j) );
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
#endif
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2012-2017 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_gridtools_ActionWithGrid_h
|
|
23
|
+
#define __PLUMED_gridtools_ActionWithGrid_h
|
|
24
|
+
|
|
25
|
+
#include "../core/ActionWithVector.h"
|
|
26
|
+
#include "GridCoordinatesObject.h"
|
|
27
|
+
|
|
28
|
+
namespace PLMD {
|
|
29
|
+
namespace gridtools {
|
|
30
|
+
|
|
31
|
+
class ActionWithGrid : public ActionWithVector {
|
|
32
|
+
public:
|
|
33
|
+
static void registerKeywords( Keywords& keys );
|
|
34
|
+
static ActionWithGrid* getInputActionWithGrid( Action* action );
|
|
35
|
+
explicit ActionWithGrid(const ActionOptions&ao);
|
|
36
|
+
void transferStashToValues( const std::vector<unsigned>& partialTaskList, const std::vector<double>& stash ) override ;
|
|
37
|
+
virtual std::vector<std::string> getGridCoordinateNames() const = 0;
|
|
38
|
+
virtual const GridCoordinatesObject& getGridCoordinatesObject() const = 0;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
#endif
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2015-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_gridtools_EvaluateGridFunction_h
|
|
23
|
+
#define __PLUMED_gridtools_EvaluateGridFunction_h
|
|
24
|
+
|
|
25
|
+
#include "../function/FunctionSetup.h"
|
|
26
|
+
#include "ActionWithGrid.h"
|
|
27
|
+
#include "Interpolator.h"
|
|
28
|
+
|
|
29
|
+
namespace PLMD {
|
|
30
|
+
namespace gridtools {
|
|
31
|
+
|
|
32
|
+
class EvaluateGridFunction {
|
|
33
|
+
public:
|
|
34
|
+
/// Hold the function on the grid
|
|
35
|
+
Value* function=NULL;
|
|
36
|
+
/// This is the grid that is used here
|
|
37
|
+
ActionWithGrid* gridact=NULL;
|
|
38
|
+
/// How should we set the value of this function outside the range
|
|
39
|
+
bool set_zero_outside_range;
|
|
40
|
+
/// How are we doing interpolation
|
|
41
|
+
enum {spline,linear,floor,ceiling} interpolation_type;
|
|
42
|
+
/// This does the interpolating
|
|
43
|
+
std::unique_ptr<Interpolator> spline_interpolator;
|
|
44
|
+
/// This is used to setup the input gridobject's bounds with the grid data from values
|
|
45
|
+
static void registerKeywords( Keywords& keys );
|
|
46
|
+
static void read( EvaluateGridFunction& func, ActionWithArguments* action, function::FunctionOptions& options );
|
|
47
|
+
static void calc( const EvaluateGridFunction& func, bool noderiv, View<const double> args, function::FunctionOutput& funcout );
|
|
48
|
+
/// Get the vector containing the minimum value of the grid in each dimension
|
|
49
|
+
std::vector<std::string> getMin() const ;
|
|
50
|
+
/// Get the vector containing the maximum value of the grid in each dimension
|
|
51
|
+
std::vector<std::string> getMax() const ;
|
|
52
|
+
/// Get the periodicity of the grid
|
|
53
|
+
std::vector<bool> getPbc() const ;
|
|
54
|
+
/// Get the number of grid points in each direction
|
|
55
|
+
std::vector<std::size_t> getNbin() const ;
|
|
56
|
+
/// Get the grid spacing
|
|
57
|
+
const std::vector<double>& getGridSpacing() const ;
|
|
58
|
+
/// This gets the grid object
|
|
59
|
+
const GridCoordinatesObject & getGridObject() const ;
|
|
60
|
+
EvaluateGridFunction& operator=( const EvaluateGridFunction& m ) {
|
|
61
|
+
function = m.function;
|
|
62
|
+
gridact = m.gridact;
|
|
63
|
+
set_zero_outside_range = m.set_zero_outside_range;
|
|
64
|
+
interpolation_type = m.interpolation_type;
|
|
65
|
+
if( interpolation_type==spline ) {
|
|
66
|
+
spline_interpolator = Tools::make_unique<Interpolator>( function, gridact->getGridCoordinatesObject() );
|
|
67
|
+
}
|
|
68
|
+
return *this;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
inline
|
|
73
|
+
std::vector<std::string> EvaluateGridFunction::getMin() const {
|
|
74
|
+
return (gridact->getGridCoordinatesObject()).getMin();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
inline
|
|
78
|
+
std::vector<std::string> EvaluateGridFunction::getMax() const {
|
|
79
|
+
return (gridact->getGridCoordinatesObject()).getMax();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
inline
|
|
83
|
+
std::vector<std::size_t> EvaluateGridFunction::getNbin() const {
|
|
84
|
+
return (gridact->getGridCoordinatesObject()).getNbin(false);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
inline
|
|
88
|
+
const std::vector<double>& EvaluateGridFunction::getGridSpacing() const {
|
|
89
|
+
return (gridact->getGridCoordinatesObject()).getGridSpacing();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
inline
|
|
93
|
+
const GridCoordinatesObject & EvaluateGridFunction::getGridObject() const {
|
|
94
|
+
return (gridact->getGridCoordinatesObject());
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
#endif
|
|
@@ -0,0 +1,295 @@
|
|
|
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_gridtools_FunctionOfGrid_h
|
|
23
|
+
#define __PLUMED_gridtools_FunctionOfGrid_h
|
|
24
|
+
|
|
25
|
+
#include "ActionWithGrid.h"
|
|
26
|
+
#include "../core/ParallelTaskManager.h"
|
|
27
|
+
#include "../function/FunctionSetup.h"
|
|
28
|
+
#include "../function/FunctionOfVector.h"
|
|
29
|
+
#include "../function/Custom.h"
|
|
30
|
+
#include "EvaluateGridFunction.h"
|
|
31
|
+
|
|
32
|
+
namespace PLMD {
|
|
33
|
+
namespace gridtools {
|
|
34
|
+
|
|
35
|
+
template <class T>
|
|
36
|
+
class FunctionOfGrid : public ActionWithGrid {
|
|
37
|
+
public:
|
|
38
|
+
using input_type = function::FunctionData<T>;
|
|
39
|
+
using PTM = ParallelTaskManager<FunctionOfGrid<T>>;
|
|
40
|
+
private:
|
|
41
|
+
/// The parallel task manager
|
|
42
|
+
PTM taskmanager;
|
|
43
|
+
//// Ensures we setup on first step
|
|
44
|
+
bool firststep;
|
|
45
|
+
/// The number of scalars that appear in the input for this calculation
|
|
46
|
+
unsigned nscalars;
|
|
47
|
+
/// Set equal to one if we are doing EvaluateGridFunction
|
|
48
|
+
unsigned argstart;
|
|
49
|
+
public:
|
|
50
|
+
static void registerKeywords(Keywords&);
|
|
51
|
+
explicit FunctionOfGrid(const ActionOptions&);
|
|
52
|
+
/// Get the number of derivatives for this action
|
|
53
|
+
unsigned getNumberOfDerivatives() override ;
|
|
54
|
+
/// Get the label to write in the graph
|
|
55
|
+
std::string writeInGraph() const override ;
|
|
56
|
+
/// Get the underlying names
|
|
57
|
+
std::vector<std::string> getGridCoordinateNames() const override ;
|
|
58
|
+
/// Get the underlying grid coordinates object
|
|
59
|
+
const GridCoordinatesObject& getGridCoordinatesObject() const override ;
|
|
60
|
+
/// Get the input data for doing the parallel calculation
|
|
61
|
+
void getInputData( std::vector<double>& inputdata ) const override ;
|
|
62
|
+
/// Do the calculation
|
|
63
|
+
void calculate() override ;
|
|
64
|
+
// Calculate the value of the function at a grid point
|
|
65
|
+
static void performTask( std::size_t task_index,
|
|
66
|
+
const function::FunctionData<T>& actiondata,
|
|
67
|
+
ParallelActionsInput& input,
|
|
68
|
+
ParallelActionsOutput& output );
|
|
69
|
+
/// Add the forces
|
|
70
|
+
// void apply() override;
|
|
71
|
+
void applyNonZeroRankForces( std::vector<double>& outforces ) override ;
|
|
72
|
+
/// This just returns one
|
|
73
|
+
static int getNumberOfValuesPerTask( std::size_t task_index,
|
|
74
|
+
const function::FunctionData<T>& actiondata );
|
|
75
|
+
/// Get the indexes where the forces are added
|
|
76
|
+
static void getForceIndices( std::size_t task_index,
|
|
77
|
+
std::size_t colno,
|
|
78
|
+
std::size_t ntotal_force,
|
|
79
|
+
const function::FunctionData<T>& actiondata,
|
|
80
|
+
const ParallelActionsInput& input,
|
|
81
|
+
ForceIndexHolder force_indices );
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
template <class T>
|
|
85
|
+
void FunctionOfGrid<T>::registerKeywords(Keywords& keys ) {
|
|
86
|
+
ActionWithGrid::registerKeywords(keys);
|
|
87
|
+
std::string name = keys.getDisplayName();
|
|
88
|
+
std::size_t und=name.find("_GRID");
|
|
89
|
+
keys.setDisplayName( name.substr(0,und) );
|
|
90
|
+
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");
|
|
91
|
+
T tfunc;
|
|
92
|
+
T::registerKeywords( keys );
|
|
93
|
+
if( typeid(tfunc)==typeid(function::Custom()) ) {
|
|
94
|
+
keys.add("hidden","NO_ACTION_LOG","suppresses printing from action on the log");
|
|
95
|
+
}
|
|
96
|
+
if( keys.outputComponentExists(".#!value") ) {
|
|
97
|
+
keys.setValueDescription("grid","the grid obtained by doing an element-wise application of " + keys.getOutputComponentDescription(".#!value") + " to the input grid");
|
|
98
|
+
keys.addInputKeyword("compulsory","ARG","scalar/grid","the labels of the scalars and functions on a grid that we are using to compute the required function");
|
|
99
|
+
}
|
|
100
|
+
PTM::registerKeywords( keys );
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
template <class T>
|
|
104
|
+
FunctionOfGrid<T>::FunctionOfGrid(const ActionOptions&ao):
|
|
105
|
+
Action(ao),
|
|
106
|
+
ActionWithGrid(ao),
|
|
107
|
+
taskmanager(this),
|
|
108
|
+
firststep(true),
|
|
109
|
+
nscalars(0),
|
|
110
|
+
argstart(0) {
|
|
111
|
+
if( getNumberOfArguments()==0 ) {
|
|
112
|
+
error("found no arguments");
|
|
113
|
+
}
|
|
114
|
+
if( typeid(taskmanager.getActionInput().f)==typeid(EvaluateGridFunction) ) {
|
|
115
|
+
argstart=1;
|
|
116
|
+
}
|
|
117
|
+
// This will require a fix
|
|
118
|
+
if( getPntrToArgument(argstart)->getRank()==0 || !getPntrToArgument(argstart)->hasDerivatives() ) {
|
|
119
|
+
error("first input to this action must be a grid");
|
|
120
|
+
}
|
|
121
|
+
// Get the shape of the input grid
|
|
122
|
+
std::vector<std::size_t> shape( getPntrToArgument(argstart)->getShape() );
|
|
123
|
+
for(unsigned i=argstart+1; i<getNumberOfArguments(); ++i ) {
|
|
124
|
+
if( getPntrToArgument(i)->getRank()==0 ) {
|
|
125
|
+
nscalars++;
|
|
126
|
+
continue;
|
|
127
|
+
} else if( getPntrToArgument(i)->hasDerivatives() ) {
|
|
128
|
+
std::vector<std::size_t> s( getPntrToArgument(i)->getShape() );
|
|
129
|
+
if( s.size()!=shape.size() ) {
|
|
130
|
+
error("mismatch between dimensionalities of input grids");
|
|
131
|
+
} else if( nscalars>0 ) {
|
|
132
|
+
error("scalars should be specified in argument list after all functions on grid");
|
|
133
|
+
}
|
|
134
|
+
} else {
|
|
135
|
+
error("input arguments should be functions on grid or scalars");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
auto & myfunc = taskmanager.getActionInput();
|
|
139
|
+
myfunc.argstart = argstart;
|
|
140
|
+
myfunc.nscalars = nscalars;
|
|
141
|
+
// Create the values for this grid
|
|
142
|
+
function::FunctionData<T>::setup( myfunc.f, keywords.getOutputComponents(), shape, true, this );
|
|
143
|
+
// Setup the task manager
|
|
144
|
+
taskmanager.setupParallelTaskManager( getNumberOfArguments()-argstart, nscalars );
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
template <class T>
|
|
148
|
+
std::string FunctionOfGrid<T>::writeInGraph() const {
|
|
149
|
+
std::size_t und = getName().find_last_of("_");
|
|
150
|
+
return getName().substr(0,und);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
template <class T>
|
|
154
|
+
const GridCoordinatesObject& FunctionOfGrid<T>::getGridCoordinatesObject() const {
|
|
155
|
+
ActionWithGrid* ag=ActionWithGrid::getInputActionWithGrid( getPntrToArgument(0)->getPntrToAction() );
|
|
156
|
+
plumed_assert( ag );
|
|
157
|
+
return ag->getGridCoordinatesObject();
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
template <class T>
|
|
161
|
+
std::vector<std::string> FunctionOfGrid<T>::getGridCoordinateNames() const {
|
|
162
|
+
ActionWithGrid* ag=ActionWithGrid::getInputActionWithGrid( getPntrToArgument(0)->getPntrToAction() );
|
|
163
|
+
plumed_assert( ag );
|
|
164
|
+
return ag->getGridCoordinateNames();
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
template <class T>
|
|
168
|
+
unsigned FunctionOfGrid<T>::getNumberOfDerivatives() {
|
|
169
|
+
return getGridCoordinatesObject().getDimension();
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
template <class T>
|
|
173
|
+
void FunctionOfGrid<T>::calculate() {
|
|
174
|
+
if( firststep ) {
|
|
175
|
+
const GridCoordinatesObject& mygrid = getGridCoordinatesObject();
|
|
176
|
+
unsigned npoints = getPntrToArgument(0)->getNumberOfValues();
|
|
177
|
+
if( mygrid.getGridType()=="flat" ) {
|
|
178
|
+
std::vector<std::size_t> shape( mygrid.getNbin(true) );
|
|
179
|
+
for(unsigned i=1; i<getNumberOfArguments(); ++i ) {
|
|
180
|
+
if( getPntrToArgument(i)->getRank()==0 ) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
std::vector<std::size_t> s( getPntrToArgument(i)->getShape() );
|
|
184
|
+
for(unsigned j=0; j<shape.size(); ++j) {
|
|
185
|
+
if( shape[j]!=s[j] ) {
|
|
186
|
+
error("mismatch between sizes of input grids");
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
for(unsigned i=0; i<getNumberOfComponents(); ++i) {
|
|
191
|
+
if( getPntrToComponent(i)->getRank()>0 ) {
|
|
192
|
+
getPntrToComponent(i)->setShape(shape);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// This resizes the scalars
|
|
197
|
+
for(unsigned i=0; i<getNumberOfComponents(); ++i) {
|
|
198
|
+
if( getPntrToComponent(i)->getRank()==0 ) {
|
|
199
|
+
getPntrToComponent(i)->resizeDerivatives( npoints );
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
taskmanager.setupParallelTaskManager( getNumberOfArguments()-argstart, nscalars );
|
|
203
|
+
firststep=false;
|
|
204
|
+
}
|
|
205
|
+
taskmanager.runAllTasks();
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
template <class T>
|
|
209
|
+
void FunctionOfGrid<T>::getInputData( std::vector<double>& inputdata ) const {
|
|
210
|
+
unsigned nargs = getNumberOfArguments();
|
|
211
|
+
|
|
212
|
+
std::size_t ntasks = 0, ngder = 0;
|
|
213
|
+
for(unsigned i=argstart; i<nargs; ++i) {
|
|
214
|
+
if( getPntrToArgument(i)->getRank()>0 ) {
|
|
215
|
+
ntasks = getPntrToArgument(i)->getNumberOfStoredValues();
|
|
216
|
+
ngder = getPntrToArgument(i)->getNumberOfDerivatives();
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
std::size_t ndata = static_cast<std::size_t>(nargs-argstart)*ntasks*(1+ngder);
|
|
222
|
+
if( inputdata.size()!=ndata ) {
|
|
223
|
+
inputdata.resize( ndata );
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
for(unsigned j=argstart; j<nargs; ++j) {
|
|
227
|
+
const Value* myarg = getPntrToArgument(j);
|
|
228
|
+
if( myarg->getRank()==0 ) {
|
|
229
|
+
double val = myarg->get();
|
|
230
|
+
for(unsigned i=0; i<ntasks; ++i) {
|
|
231
|
+
inputdata[(nargs-argstart)*(1+ngder)*i + j-argstart] = val;
|
|
232
|
+
}
|
|
233
|
+
} else {
|
|
234
|
+
for(unsigned i=0; i<ntasks; ++i) {
|
|
235
|
+
inputdata[(nargs-argstart)*(1+ngder)*i + j-argstart] = myarg->get(i);
|
|
236
|
+
for(unsigned k=0; k<ngder; ++k) {
|
|
237
|
+
inputdata[(nargs-argstart)*(1+ngder)*i + (nargs-argstart) + (j-argstart)*ngder + k] = myarg->getGridDerivative( i, k );
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
template <class T>
|
|
245
|
+
void FunctionOfGrid<T>::performTask( std::size_t task_index,
|
|
246
|
+
const function::FunctionData<T>& actiondata,
|
|
247
|
+
ParallelActionsInput& input,
|
|
248
|
+
ParallelActionsOutput& output ) {
|
|
249
|
+
|
|
250
|
+
std::size_t rank=input.ranks[actiondata.argstart];
|
|
251
|
+
std::size_t spacing = (input.nargs-actiondata.argstart)*(1+rank);
|
|
252
|
+
auto funcout = function::FunctionOutput::create( input.ncomponents,
|
|
253
|
+
output.values.data(),
|
|
254
|
+
input.nargs-actiondata.argstart,
|
|
255
|
+
output.derivatives.data() );
|
|
256
|
+
T::calc( actiondata.f,
|
|
257
|
+
input.noderiv,
|
|
258
|
+
View<const double>( input.inputdata + task_index*spacing,
|
|
259
|
+
input.nargs-actiondata.argstart ),
|
|
260
|
+
funcout );
|
|
261
|
+
|
|
262
|
+
for(unsigned j=actiondata.argstart; j<input.nargs; ++j) {
|
|
263
|
+
double df = output.derivatives[j-actiondata.argstart];
|
|
264
|
+
View<const double> inders( input.inputdata + task_index*spacing + (input.nargs-actiondata.argstart) + (j-actiondata.argstart)*rank, rank );
|
|
265
|
+
for(unsigned k=0; k<input.ranks[actiondata.argstart]; ++k) {
|
|
266
|
+
output.values[1+k] += df*inders[k];
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
template <class T>
|
|
272
|
+
void FunctionOfGrid<T>::applyNonZeroRankForces( std::vector<double>& outforces ) {
|
|
273
|
+
taskmanager.applyForces( outforces );
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
template <class T>
|
|
277
|
+
int FunctionOfGrid<T>::getNumberOfValuesPerTask( std::size_t task_index,
|
|
278
|
+
const function::FunctionData<T>& actiondata ) {
|
|
279
|
+
return 1;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
template <class T>
|
|
283
|
+
void FunctionOfGrid<T>::getForceIndices( std::size_t task_index,
|
|
284
|
+
std::size_t colno,
|
|
285
|
+
std::size_t ntotal_force,
|
|
286
|
+
const function::FunctionData<T>& actiondata,
|
|
287
|
+
const ParallelActionsInput& input,
|
|
288
|
+
ForceIndexHolder force_indices ) {
|
|
289
|
+
// The force indices are found in the same way as in FunctionOfVector so we reuse that function here
|
|
290
|
+
function::FunctionOfVector<T>::getForceIndices( task_index, colno, ntotal_force, actiondata, input, force_indices );
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
#endif
|