Grompp error for mismatching nst for energy calulation and densityfitting
[alexxy/gromacs.git] / src / gromacs / applied_forces / densityfittingoptions.cpp
index 2543cd543c1692848da2a9fc7b982b6820e6620c..bf9f89aa127a98f38e5840478ca0a330f115e55f 100644 (file)
@@ -51,6 +51,7 @@
 #include "gromacs/utility/exceptions.h"
 #include "gromacs/utility/keyvaluetreebuilder.h"
 #include "gromacs/utility/keyvaluetreetransform.h"
+#include "gromacs/utility/mdmodulenotification.h"
 #include "gromacs/utility/strconvert.h"
 
 #include "densityfittingamplitudelookup.h"
@@ -248,6 +249,17 @@ void DensityFittingOptions::readInternalParametersFromKvt(const KeyValueTreeObje
                    [](const KeyValueTreeValue &val) { return val.cast<std::int64_t>(); });
 }
 
+void DensityFittingOptions::checkEnergyCaluclationFrequency(EnergyCalculationFrequencyErrors * energyCalculationFrequencyErrors) const
+{
+    if (energyCalculationFrequencyErrors->energyCalculationIntervalInSteps() % parameters_.calculationIntervalInSteps_ != 0)
+    {
+        energyCalculationFrequencyErrors->addError("nstcalcenergy (" +
+                                                   toString(energyCalculationFrequencyErrors->energyCalculationIntervalInSteps())
+                                                   + ") is not a multiple of " + DensityFittingModuleInfo::name_ + "-" + c_everyNStepsTag_
+                                                   + " (" + toString(parameters_.calculationIntervalInSteps_) + ") .");
+    }
+}
+
 const std::string &DensityFittingOptions::referenceDensityFileName() const
 {
     return referenceDensityFileName_;