static bool step_man(t_manager *man, int *nat) { static int ncount = 0; static bool bWarn = false; bool bEof; const char *warn; if (!man->natom) { fprintf(stderr, "Not initiated yet!"); exit(1); } bEof = read_next_x(man->oenv, man->status, &man->time, man->x, man->box); *nat = man->natom; if (ncount == man->nSkip) { switch (man->molw->boxtype) { case esbTri: put_atoms_in_triclinic_unitcell(ecenterDEF, man->box, man->natom, man->x); break; case esbTrunc: warn = put_atoms_in_compact_unitcell(man->molw->ePBC, ecenterDEF, man->box, man->natom, man->x); if (warn && !bWarn) { fprintf(stderr, "\n%s\n", warn); bWarn = true; } break; case esbRect: case esbNone: default: break; } if (man->bPbc) { gmx_rmpbc(man->gpbc, man->natom, man->box, man->x); reset_mols(&(man->top.mols), man->box, man->x); } ncount = 0; } else { if (man->nSkip > 0) { ncount++; return step_man(man, nat); } } return bEof; }
static bool step_man(t_manager *man, int *nat) { static int ncount = 0; bool bEof; if (!man->natom) { std::fprintf(stderr, "Not initiated yet!"); std::exit(1); } bEof = read_next_x(man->oenv, man->status, &man->time, man->x, man->box); *nat = man->natom; if (ncount == man->nSkip) { auto atomsArrayRef = gmx::arrayRefFromArray(reinterpret_cast<gmx::RVec *>(man->x), man->natom); switch (man->molw->boxtype) { case esbTri: put_atoms_in_triclinic_unitcell(ecenterDEF, man->box, atomsArrayRef); break; case esbTrunc: put_atoms_in_compact_unitcell(man->molw->ePBC, ecenterDEF, man->box, atomsArrayRef); break; case esbRect: case esbNone: default: break; } if (man->bPbc) { gmx_rmpbc(man->gpbc, man->natom, man->box, man->x); reset_mols(&(man->top.mols), man->box, man->x); } ncount = 0; } else { if (man->nSkip > 0) { ncount++; return step_man(man, nat); } } return bEof; }