Gromacs  2021.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Todo List
Member AtomProperties::atomNumberFromElement (const char *element)
This should be made const once the lazy implementation is done properly for the class.
Member AtomProperties::elementFromAtomNumber (int atomNumber)
This should be made const once the lazy implementation is done properly for the class.
Member clearModificationBlock (MoleculePatchDatabase *globalPatches)
Remove once constructor/destructor takes care of all of this.
Member copyPreprocessResidues (const PreprocessResidue &s, PreprocessResidue *d, t_symtab *symtab)
Remove once copy can be done directly.
Member df_history_t
Split out into microstate and observables history.
Class gmx::AbstractAnalysisArrayData
Add support for multiple data sets.
Class gmx::AbstractAnalysisData
Improve the exception-handling semantics. In most cases, it doesn't make much sense to continue data processing after one module fails, but having the alternative would not hurt.
Member gmx::AbstractAnalysisData::addColumnModule (int col, int span, const AnalysisDataModulePointer &module)

This method doesn't currently work in all cases with multipoint data or with multiple data sets. In particular, if the added module requests storage and uses getDataFrame(), it will behave unpredictably (most likely asserts).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Generalize this method to multiple data sets (e.g., for adding modules that only process a single data set).

Member gmx::AbstractAnalysisData::applyModule (IAnalysisDataModule *module)
Currently, this method may not work correctly if module requests storage (addModule() has the same problem if called after data is started).
Class gmx::AnalysisData
Parallel implementation is not complete.
Class gmx::AnalysisNeighborhood
Generalize the exclusion machinery to make it easier to use for other cases than atom-atom exclusions from the topology.
Class gmx::AnalysisNeighborhoodSearch

Make it such that reset() is not necessary to call in code that repeatedly assigns the result of AnalysisNeighborhood::initSearch() to the same variable (see sm_distance.cpp).

Consider removing minimumDistance(), as nearestPoint() already returns the distance.

Member gmx::applyGlobalSimulationState (const SimulationInput &simulationInput, PartialDeserializedTprFile *partialDeserializedTpr, t_state *globalState, t_inputrec *inputrec, gmx_mtop_t *globalTopology)
Factor the logic for global/local and master-rank-checks. The SimulationInput utilities should behave properly for the various distributed data scenarios. Consider supplying data directly to the consumers rather than exposing the implementation details of the legacy aggregate types.
Member gmx::applyLocalState (const SimulationInput &simulationInput, t_fileio *logfio, const t_commrec *cr, int *dd_nc, t_inputrec *ir, t_state *state, ObservablesHistory *observablesHistory, bool reproducibilityRequested, const MdModulesNotifier &notifier, gmx::ReadCheckpointDataHolder *modularSimulatorCheckpointData, bool useModularSimulator)

Factor the distributed data aspects of simulation input data into the SimulationInput implementation.

Consider refactoring to decouple the checkpoint facility from its consumers (state, observablesHistory, mdModulesNotifier, and parts of ir).

Consider refactoring to decouple the checkpoint facility from its consumers (state, observablesHistory, mdModulesNotifier, and parts of ir).

Consider refactoring to decouple the checkpoint facility from its consumers (state, observablesHistory, mdModulesNotifier, and parts of ir).

Class gmx::ArrayRef< typename >
This class is not complete. There are likely also methods missing (not required for current usage).
Member gmx::ArrayRef< typename >::ArrayRef (U &&o)
Use std::is_convertible_v when CUDA 11 is a requirement.
Member gmx::ArrayRefWithPadding< typename >::ArrayRefWithPadding (U &&o)
Use std::is_same_v when CUDA 11 is a requirement.
Member gmx::BoxMatrix
Implement a full replacement for C-style real[DIM][DIM]
Member gmx::checkUserGpuIds (const std::vector< std::unique_ptr< DeviceInformation >> &deviceInfoList, const std::vector< int > &compatibleGpus, const std::vector< int > &gpuIds)
Note that the selected GPUs can be different on each rank, and the IDs of compatible GPUs can be different on each node, so this routine ought to do communication to determine whether all ranks are able to proceed. Currently this relies on the MPI runtime to kill the other processes because GROMACS lacks the appropriate infrastructure to do a good job of coordinating error messages and behaviour across MPMD ranks and multiple simulations.
Member gmx::CoordinateFileFlags
Use std::bitset<16> for the entries.
Member gmx::cshake (const int iatom[], int ncon, int *nnit, int maxnit, ArrayRef< const real > constraint_distance_squared, ArrayRef< RVec > positions, const t_pbc *pbc, ArrayRef< const RVec > initial_displacements, ArrayRef< const real > half_of_reduced_mass, real omega, const real invmass[], ArrayRef< const real > distance_squared_tolerance, ArrayRef< real > scaled_lagrange_multiplier, int *nerror)
Make SHAKE use better data structures, in particular for iatom.
Member gmx::DataFileInfo::bFromDefaultDir
Consider replacing with an enum that identifies the source (current dir, GMXLIB, default).
Class gmx::detail::PaddingTraits< T >
Consider explicitly tying these types to the SimdTrait types. That would require depending on the SIMD module, or extracting the traits from it. This would also permit maxSimdWidthOfBaseType to be set more efficiently, e.g. as a metaprogramming max over the maximum width from different implementations.
Member gmx::detectAllDeviceInformation (const PhysicalNodeCommunicator &physicalNodeComm)
Coordinating the efficient detection of devices across multiple ranks per node should be separated from the lower-level hardware detection. See https://gitlab.com/gromacs/gromacs/-/issues/3650.
Class gmx::ExceptionInitializer
With the exception of the reason string, information added with this class is not currently accessible through any public API, except for calling printFatalErrorMessage(), formatExceptionMessageToString() or formatExceptionMessageToFile(). This is not implemented as there is not yet need for it, and it is not clear what would be the best alternative for the access. It should be possible to refactor the internal implementation to suit the needs of such external access without requiring changes in code that throws these exceptions.
Member gmx::FileNameOption::libraryFile (bool bLibrary=true)
Currently, this flag only affects the help output. Callers must take care themselves to actually search the file in the library directories. It would be nicer to do this searching within the file name option implementation.
Class gmx::FileNameOptionManager
Most of the functionality in this class is specific to command line parsing, so it would be cleaner to replace this with an interface, and have the actual code in the commandline module.
Member gmx::getPageSize ()
Move this function into sysinfo.cpp where other OS-specific code/includes live
Member gmx::gmx_detect_hardware (const PhysicalNodeCommunicator &physicalNodeComm)
Replace the use of MPI_COMM_WORLD e.g. by using a libraryCommWorld argument. See https://gitlab.com/gromacs/gromacs/-/issues/3650
Member gmx::gmx_mdrun (MPI_Comm communicator, const gmx_hw_info_t &hwinfo, int argc, char *argv[])
Progress on https://gitlab.com/gromacs/gromacs/-/issues/3774 will remove the need of test binaries to call gmx_mdrun in a way that is different from the command-line and gmxapi.
Member gmx::GromacsException::prependContext (const std::string &context)
The added information is currently not accessible through what(), nor through any other means except for calling printFatalErrorMessage(), formatExceptionMessageToString() or formatExceptionMessageToFile(). See ExceptionInitializer for more discussion.
Class gmx::InteractiveMD
If adding doxygen stubs actual add the full stub.
Class gmx::IonSwapping
Add full information.
Class gmx::IRestraintPotential
Template headers can help to build compatible calculation methods with different input requirements. For reference, see https://github.com/kassonlab/sample_restraint
Member gmx::IRestraintPotential::evaluate (Vector r1, Vector r2, double t)=0
The virtual function call should be replaced by a (table of) function objects retrieved before the run.
Member gmx::makeArrayRef (T &c)
Use std::is_const_v when CUDA 11 is a requirement.
Member gmx::makeOpenClInternalErrorString (const char *message, cl_int status)
Make use of this function more.
Member gmx::NumTempScaleValues
Unify with similar enum in CPU update module
Member gmx::openTNG (const std::string &name, const Selection &sel, const gmx_mtop_t *mtop)
Those should be methods in a replacement for t_trxstatus instead.
Member gmx::PaddedVector< T, Allocator >::rvec_array ()
Use std::is_same_v when CUDA 11 is a requirement.
Member gmx::PaddedVector< T, Allocator >::rvec_array () const
Use std::is_same_v when CUDA 11 is a requirement.
Member gmx::reportGpuUsage (const MDLogger &mdlog, ArrayRef< const GpuTaskAssignment > gpuTaskAssignmentOnRanksOfThisNode, size_t numGpuTasksOnThisNode, size_t numPpRanks, bool printHostName, bool useGpuForBonded, PmeRunMode pmeRunMode, bool useGpuForUpdate)
It could be useful to report also whether any nodes differed, and in what way.
Member gmx::Selection::setEvaluateVelocities (bool bEnabled)
Implement it such that in the above case, hasVelocities() will return false for such frames.
Class gmx::SelectionOption

Support for specifying that an option accepts, e.g., two to four selections. Currently, only a fixed count or any number of selections is possible.

Class gmx::SimulatorEnv
Fix doxygen checks.
Class gmx::SimulatorStateData
Think of a better name and annoy people that forget to add documentation for their code.
Class gmx::TrajectoryAnalysisSettings
Remove plain flags from the public interface.
Member gmx::VelocityScalingType
Unify with similar enum in CPU update module
Member GMX_UNUSED_VALUE (value)
Deprecated - use gmx_unused
File hostallocator.h
This should not be in the public API, but it needs to be for the moment because state.h is in that API.
Group module_domdec
Get domdec stuff out of mdtypes/commrec.h
Group module_modularsimulator
Can we link to docs/doxygen/lib/modularsimulator.md?
File pbc_aiuc.h
CPU, GPU and SIMD routines essentially do the same operations on different data-types. Currently this leads to code duplication, which has to be resolved. For details, see Issue #2863 https://gitlab.com/gromacs/gromacs/-/issues/2863
Member pbcDxAiuc (const PbcAiuc &pbcAiuc, const rvec &r1, const rvec &r2, rvec dr)
This routine operates on rvec types and uses PbcAiuc to define periodic box, but essentially does the same thing as SIMD and GPU version. These will have to be unified in future to avoid code duplication. See Issue #2863: https://gitlab.com/gromacs/gromacs/-/issues/2863
Member set_over_alloc_dd (gmx_bool set)
This is mdrun-specific, so it might be better to put this and over_alloc_dd() much higher up.
File simulationsignal.h
Move this to mdrunutility module alongside gathering multi-simulation communication infrastructure there.
Class t_state
Move pure observables history to ObservablesHistory.