void read_stx_conf(const char *infile, char *title, t_atoms *atoms, rvec x[], rvec *v, int *ePBC, matrix box) { FILE *in; char buf[256]; gmx_mtop_t *mtop; t_topology top; t_trxframe fr; int i, ftp, natoms; real d; char g96_line[STRLEN+1]; if (atoms->nr == 0) { fprintf(stderr, "Warning: Number of atoms in %s is 0\n", infile); } else if (atoms->atom == NULL) { gmx_mem("Uninitialized array atom"); } if (ePBC) { *ePBC = -1; } ftp = fn2ftp(infile); switch (ftp) { case efGRO: read_whole_conf(infile, title, atoms, x, v, box); break; case efG96: fr.title = NULL; fr.natoms = atoms->nr; fr.atoms = atoms; fr.x = x; fr.v = v; fr.f = NULL; in = gmx_fio_fopen(infile, "r"); read_g96_conf(in, infile, &fr, g96_line); gmx_fio_fclose(in); copy_mat(fr.box, box); strncpy(title, fr.title, STRLEN); break; case efPDB: case efBRK: case efENT: read_pdb_conf(infile, title, atoms, x, ePBC, box, TRUE, NULL); break; case efESP: read_espresso_conf(infile, atoms, x, v, box); break; case efTPR: case efTPB: case efTPA: snew(mtop, 1); i = read_tpx(infile, NULL, box, &natoms, x, v, NULL, mtop); if (ePBC) { *ePBC = i; } strcpy(title, *(mtop->name)); /* Free possibly allocated memory */ done_atom(atoms); *atoms = gmx_mtop_global_atoms(mtop); top = gmx_mtop_t_to_t_topology(mtop); tpx_make_chain_identifiers(atoms, &top.mols); sfree(mtop); /* The strings in the symtab are still in use in the returned t_atoms * structure, so we should not free them. But there is no place to put the * symbols; the only choice is to leak the memory... * So we clear the symbol table before freeing the topology structure. */ free_symtab(&top.symtab); done_top(&top); break; default: gmx_incons("Not supported in read_stx_conf"); } }
void read_stx_conf(char *infile, char *title,t_atoms *atoms, rvec x[],rvec *v,int *ePBC,matrix box) { FILE *in; char buf[256]; gmx_mtop_t *mtop; t_topology top; t_trxframe fr; int i,ftp,natoms,i1; real d,r1,r2; if (atoms->nr == 0) fprintf(stderr,"Warning: Number of atoms in %s is 0\n",infile); else if (atoms->atom == NULL) gmx_mem("Uninitialized array atom"); if (ePBC) *ePBC = -1; ftp=fn2ftp(infile); switch (ftp) { case efGRO: read_whole_conf(infile, title, atoms, x, v, box); break; case efG96: fr.title = title; fr.natoms = atoms->nr; fr.atoms = atoms; fr.x = x; fr.v = v; fr.f = NULL; in = gmx_fio_fopen(infile,"r"); read_g96_conf(in, infile, &fr); gmx_fio_fclose(in); copy_mat(fr.box,box); break; case efPDB: case efBRK: case efENT: read_pdb_conf(infile, title, atoms, x, ePBC, box, TRUE, NULL); break; case efESP: read_espresso_conf(infile,atoms,x,v,box); break; case efTPR: case efTPB: case efTPA: snew(mtop,1); i = read_tpx(infile,&i1,&r1,&r2,NULL,box,&natoms,x,v,NULL,mtop); if (ePBC) *ePBC = i; strcpy(title,*(mtop->name)); /* Free possibly allocated memory */ done_atom(atoms); *atoms = gmx_mtop_global_atoms(mtop); top = gmx_mtop_t_to_t_topology(mtop); tpx_make_chain_identifiers(atoms,&top.mols); sfree(mtop); done_top(&top); break; default: gmx_incons("Not supported in read_stx_conf"); } }