}
}
- /* QMMM stuff */
+ /* QMMM reading - despite defunct we require reading for backwards
+ * compability and correct serialization
+ */
{
serializer->doBool(&ir->bQMMM);
- serializer->doInt(&ir->QMMMscheme);
- serializer->doReal(&ir->scalefactor);
+ int qmmmScheme;
+ serializer->doInt(&qmmmScheme);
+ real unusedScalefactor;
+ serializer->doReal(&unusedScalefactor);
+
+ // this is still used in Mimic
serializer->doInt(&ir->opts.ngQM);
- if (serializer->reading())
- {
- snew(ir->opts.QMmethod, ir->opts.ngQM);
- snew(ir->opts.QMbasis, ir->opts.ngQM);
- snew(ir->opts.QMcharge, ir->opts.ngQM);
- snew(ir->opts.QMmult, ir->opts.ngQM);
- snew(ir->opts.bSH, ir->opts.ngQM);
- snew(ir->opts.CASorbitals, ir->opts.ngQM);
- snew(ir->opts.CASelectrons, ir->opts.ngQM);
- snew(ir->opts.SAon, ir->opts.ngQM);
- snew(ir->opts.SAoff, ir->opts.ngQM);
- snew(ir->opts.SAsteps, ir->opts.ngQM);
- }
if (ir->opts.ngQM > 0 && ir->bQMMM)
{
- serializer->doIntArray(ir->opts.QMmethod, ir->opts.ngQM);
- serializer->doIntArray(ir->opts.QMbasis, ir->opts.ngQM);
- serializer->doIntArray(ir->opts.QMcharge, ir->opts.ngQM);
- serializer->doIntArray(ir->opts.QMmult, ir->opts.ngQM);
- serializer->doBoolArray(ir->opts.bSH, ir->opts.ngQM);
- serializer->doIntArray(ir->opts.CASorbitals, ir->opts.ngQM);
- serializer->doIntArray(ir->opts.CASelectrons, ir->opts.ngQM);
- serializer->doRealArray(ir->opts.SAon, ir->opts.ngQM);
- serializer->doRealArray(ir->opts.SAoff, ir->opts.ngQM);
- serializer->doIntArray(ir->opts.SAsteps, ir->opts.ngQM);
/* We leave in dummy i/o for removed parameters to avoid
- * changing the tpr format for every QMMM change.
+ * changing the tpr format.
*/
- std::vector<int> dummy(ir->opts.ngQM, 0);
- serializer->doIntArray(dummy.data(), ir->opts.ngQM);
- serializer->doIntArray(dummy.data(), ir->opts.ngQM);
+ std::vector<int> dummyIntVec(4 * ir->opts.ngQM, 0);
+ serializer->doIntArray(dummyIntVec.data(), dummyIntVec.size());
+ dummyIntVec.clear();
+
+ // std::vector<bool> has no data()
+ std::vector<char> dummyBoolVec(ir->opts.ngQM * sizeof(bool) / sizeof(char));
+ serializer->doBoolArray(reinterpret_cast<bool*>(dummyBoolVec.data()), dummyBoolVec.size());
+ dummyBoolVec.clear();
+
+ dummyIntVec.resize(2 * ir->opts.ngQM, 0);
+ serializer->doIntArray(dummyIntVec.data(), dummyIntVec.size());
+ dummyIntVec.clear();
+
+ std::vector<real> dummyRealVec(2 * ir->opts.ngQM, 0);
+ serializer->doRealArray(dummyRealVec.data(), dummyRealVec.size());
+ dummyRealVec.clear();
+
+ dummyIntVec.resize(3 * ir->opts.ngQM, 0);
+ serializer->doIntArray(dummyIntVec.data(), dummyIntVec.size());
+ dummyIntVec.clear();
}
/* end of QMMM stuff */
}