void gmx_tng_prepare_low_prec_writing(tng_trajectory_t tng, const gmx_mtop_t *mtop, const t_inputrec *ir) { #ifdef GMX_USE_TNG gmx_tng_add_mtop(tng, mtop); add_selection_groups(tng, mtop); set_writing_intervals(tng, TRUE, ir); tng_time_per_frame_set(tng, ir->delta_t * PICO); gmx_tng_set_compression_precision(tng, ir->x_compression_precision); #else GMX_UNUSED_VALUE(tng); GMX_UNUSED_VALUE(mtop); GMX_UNUSED_VALUE(ir); #endif }
int write_trxframe(t_trxstatus *status, t_trxframe *fr, gmx_conect gc) { char title[STRLEN]; real prec; if (fr->bPrec) { prec = fr->prec; } else { prec = 1000.0; } if (status->tng) { gmx_tng_set_compression_precision(status->tng, prec); write_tng_frame(status, fr); return 0; } switch (gmx_fio_getftp(status->fio)) { case efTRR: break; default: if (!fr->bX) { gmx_fatal(FARGS, "Need coordinates to write a %s trajectory", ftp2ext(gmx_fio_getftp(status->fio))); } break; } switch (gmx_fio_getftp(status->fio)) { case efXTC: write_xtc(status->fio, fr->natoms, fr->step, fr->time, fr->box, fr->x, prec); break; case efTRR: gmx_trr_write_frame(status->fio, fr->step, fr->time, fr->lambda, fr->box, fr->natoms, fr->bX ? fr->x : nullptr, fr->bV ? fr->v : nullptr, fr->bF ? fr->f : nullptr); break; case efGRO: case efPDB: case efBRK: case efENT: if (!fr->bAtoms) { gmx_fatal(FARGS, "Can not write a %s file without atom names", ftp2ext(gmx_fio_getftp(status->fio))); } sprintf(title, "frame t= %.3f", fr->time); if (gmx_fio_getftp(status->fio) == efGRO) { write_hconf_p(gmx_fio_getfp(status->fio), title, fr->atoms, fr->x, fr->bV ? fr->v : nullptr, fr->box); } else { write_pdbfile(gmx_fio_getfp(status->fio), title, fr->atoms, fr->x, fr->bPBC ? fr->ePBC : -1, fr->box, ' ', fr->step, gc, TRUE); } break; case efG96: write_g96_conf(gmx_fio_getfp(status->fio), title, fr, -1, nullptr); break; default: gmx_fatal(FARGS, "Sorry, write_trxframe can not write %s", ftp2ext(gmx_fio_getftp(status->fio))); break; } return 0; }