{
rvec tmp;
- serializer->doInt(&pgrp->nat);
- if (serializer->reading())
- {
- snew(pgrp->ind, pgrp->nat);
- }
- serializer->doIntArray(pgrp->ind, pgrp->nat);
- serializer->doInt(&pgrp->nweight);
- if (serializer->reading())
- {
- snew(pgrp->weight, pgrp->nweight);
- }
- serializer->doRealArray(pgrp->weight, pgrp->nweight);
+ int numAtoms = pgrp->ind.size();
+ serializer->doInt(&numAtoms);
+ pgrp->ind.resize(numAtoms);
+ serializer->doIntArray(pgrp->ind.data(), numAtoms);
+ int numWeights = pgrp->weight.size();
+ serializer->doInt(&numWeights);
+ pgrp->weight.resize(numWeights);
+ serializer->doRealArray(pgrp->weight.data(), numWeights);
serializer->doInt(&pgrp->pbcatom);
- serializer->doRvec(&pcrd->vec);
+ serializer->doRvec(&pcrd->vec.as_vec());
clear_rvec(pcrd->origin);
serializer->doRvec(&tmp);
pcrd->init = tmp[0];
static void do_pull_group(gmx::ISerializer* serializer, t_pull_group* pgrp)
{
- serializer->doInt(&pgrp->nat);
- if (serializer->reading())
- {
- snew(pgrp->ind, pgrp->nat);
- }
- serializer->doIntArray(pgrp->ind, pgrp->nat);
- serializer->doInt(&pgrp->nweight);
- if (serializer->reading())
- {
- snew(pgrp->weight, pgrp->nweight);
- }
- serializer->doRealArray(pgrp->weight, pgrp->nweight);
+ int numAtoms = pgrp->ind.size();
+ serializer->doInt(&numAtoms);
+ pgrp->ind.resize(numAtoms);
+ serializer->doIntArray(pgrp->ind.data(), numAtoms);
+ int numWeights = pgrp->weight.size();
+ serializer->doInt(&numWeights);
+ pgrp->weight.resize(numWeights);
+ serializer->doRealArray(pgrp->weight.data(), numWeights);
serializer->doInt(&pgrp->pbcatom);
}
}
else
{
- pcrd->externalPotentialProvider = nullptr;
+ pcrd->externalPotentialProvider.clear();
}
}
else
{
if (serializer->reading())
{
- pcrd->externalPotentialProvider = nullptr;
+ pcrd->externalPotentialProvider.clear();
}
}
/* Note that we try to support adding new geometries without
serializer->doInt(&pcrd->ngroup);
if (pcrd->ngroup <= c_pullCoordNgroupMax)
{
- serializer->doIntArray(pcrd->group, pcrd->ngroup);
+ serializer->doIntArray(pcrd->group.data(), pcrd->ngroup);
}
else
{
pcrd->ngroup = 0;
}
- serializer->doIvec(&pcrd->dim);
+ serializer->doIvec(&pcrd->dim.as_vec());
}
else
{
serializer->doInt(&pcrd->group[2]);
serializer->doInt(&pcrd->group[3]);
}
- serializer->doIvec(&pcrd->dim);
+ serializer->doIvec(&pcrd->dim.as_vec());
}
else
{
copy_ivec(dimOld, pcrd->dim);
}
}
- serializer->doRvec(&pcrd->origin);
- serializer->doRvec(&pcrd->vec);
+ serializer->doRvec(&pcrd->origin.as_vec());
+ serializer->doRvec(&pcrd->vec.as_vec());
if (file_version >= tpxv_PullCoordTypeGeom)
{
serializer->doBool(&pcrd->bStart);
{
pull->bSetPbcRefToPrevStepCOM = FALSE;
}
- if (serializer->reading())
- {
- snew(pull->group, pull->ngroup);
- snew(pull->coord, pull->ncoord);
- }
+ pull->group.resize(pull->ngroup);
+ pull->coord.resize(pull->ncoord);
if (file_version < 95)
{
/* epullgPOS for position pulling, before epullgDIRPBC was removed */
}
}
- pull->bPrintCOM = (pull->group[0].nat > 0);
+ pull->bPrintCOM = (!pull->group[0].ind.empty());
}
else
{
{
if (serializer->reading())
{
- snew(ir->pull, 1);
+ ir->pull = std::make_unique<pull_params_t>();
}
- do_pull(serializer, ir->pull, file_version, ePullOld);
+ do_pull(serializer, ir->pull.get(), file_version, ePullOld);
}
}