static gmx_bool do_trn(t_fileio *fio, gmx_bool bRead, int *step, real *t, real *lambda, rvec *box, int *natoms, rvec *x, rvec *v, rvec *f) { t_trnheader *sh; gmx_bool bOK; snew(sh, 1); if (!bRead) { sh->box_size = (box) ? sizeof(matrix) : 0; sh->x_size = ((x) ? (*natoms*sizeof(x[0])) : 0); sh->v_size = ((v) ? (*natoms*sizeof(v[0])) : 0); sh->f_size = ((f) ? (*natoms*sizeof(f[0])) : 0); sh->natoms = *natoms; sh->step = *step; sh->nre = 0; sh->t = *t; sh->lambda = *lambda; } if (!do_trnheader(fio, bRead, sh, &bOK)) { return FALSE; } if (bRead) { *natoms = sh->natoms; *step = sh->step; *t = sh->t; *lambda = sh->lambda; if (sh->ir_size) { gmx_file("inputrec in trn file"); } if (sh->e_size) { gmx_file("energies in trn file"); } if (sh->top_size) { gmx_file("topology in trn file"); } if (sh->sym_size) { gmx_file("symbol table in trn file"); } } bOK = do_htrn(fio, sh, box, x, v, f); sfree(sh); return bOK; }
static int do_trn(XDRFILE *xd,mybool bRead,int *step,float *t,float *lambda, matrix box,int *natoms,rvec *x,rvec *v,rvec *f) { t_trnheader *sh; int result; sh = calloc(1,sizeof(*sh)); if (!bRead) { sh->box_size = (NULL != box) ? sizeof(matrix):0; sh->x_size = ((NULL != x) ? (*natoms*sizeof(x[0])):0); sh->v_size = ((NULL != v) ? (*natoms*sizeof(v[0])):0); sh->f_size = ((NULL != f) ? (*natoms*sizeof(f[0])):0); sh->natoms = *natoms; sh->step = *step; sh->nre = 0; sh->td = *t; sh->lambdad = *lambda; sh->tf = *t; sh->lambdaf = *lambda; } if ((result = do_trnheader(xd,bRead,sh)) != exdrOK) return result; if (bRead) { *natoms = sh->natoms; *step = sh->step; *t = sh->td; *lambda = sh->lambdad; } if ((result = do_htrn(xd,bRead,sh,box,x,v,f)) != exdrOK) return result; free(sh); return exdrOK; }
gmx_bool fread_htrn(t_fileio *fio, t_trnheader *trn, rvec *box, rvec *x, rvec *v, rvec *f) { return do_htrn(fio, trn, box, x, v, f); }
bool fread_htrn(int fp,t_trnheader *trn,rvec *box,rvec *x,rvec *v,rvec *f) { return do_htrn(fp,TRUE,trn,box,x,v,f); }