/********* This file is part of the Babel Program Copyright (C) 1992-96 W. Patrick Walters and Matthew T. Stahl All Rights Reserved All Rights Reserved All Rights Reserved All Rights Reserved For more information please contact : babel@mercury.aichem.arizona.edu -------------------------------------------------------------------------------- FILE : wrpsgvbz.c AUTHOR(S) : Pat Walters, Matthew Stahl, Tom Pollard DATE : 1-96 PURPOSE : Routines to write a PS-GVB Z-Matrix input file ******/ #include "bbltyp.h" int write_psgvb_zmat(FILE *file1, ums_type *mol) { int i=0; char type_name[5]; char type_nameA[5]; char type_nameB[5]; char type_nameC[5]; double a,d; int result; FILE *file2; char buffer[BUFF_SIZE]; char babel_dir[BUFF_SIZE]; if (Atoms > 0) { initialize_internal(&mol); cartint(mol); cartgeom(mol); } if ((file2 = fopen("psgvb.hdr","r")) != NULL) { while (fgets(buffer,sizeof(buffer),file2)) fprintf(file1,"%s",buffer); if (file2) fclose(file2); } else if (getenv("BABEL_DIR")) { strcpy(babel_dir,getenv("BABEL_DIR")); strcat(babel_dir,"/psgvb.hdr"); if ((file2 = fopen(babel_dir,"r")) != NULL) { while (fgets(buffer,sizeof(buffer),file2)) fprintf(file1,"%s",buffer); if (file2) fclose(file2); } } else { fprintf(file1,"inv0230\n"); fprintf(file1,"JOB: JOBNAME\n"); fprintf(file1,"DIR: EXEDIR TEMPDIR\n"); } fprintf(file1,"This PS-GVB input file generated by Babel %s\n",BABEL_VERSION); fprintf(file1,"$zmat\n"); for(i=1; i <= Atoms; i++) { strcpy(type_name,Type(i)); result = get_output_type(i,"XYZ",Type(i),type_name,all_caps); clean_atom_type(type_name); if (i>1) { strcpy(type_nameA,Type(NA(i))); result = get_output_type(i,"XYZ",Type(NA(i)),type_nameA,all_caps); clean_atom_type(type_nameA); } if (i>2) { strcpy(type_nameB,Type(NB(i))); result = get_output_type(i,"XYZ",Type(NB(i)),type_nameB,all_caps); clean_atom_type(type_nameB); } if (i>3) { strcpy(type_nameC,Type(NC(i))); result = get_output_type(i,"XYZ",Type(NC(i)),type_nameC,all_caps); clean_atom_type(type_nameC); } switch(i) { case 1 : fprintf(file1,"%s%d \n",type_name,i); break; case 2 : fprintf(file1,"%s%d %s%d r%d \n", type_name, i, type_nameA,NA(i),i); break; case 3 : fprintf(file1,"%s%d %s%d r%d %s%d a%d\n", type_name,i, type_nameA,NA(i),i, type_nameB,NB(i),i); break; default : fprintf(file1,"%s%d %s%d r%d %s%d a%d %s%d d%d\n", type_name,i, type_nameA,NA(i),i, type_nameB,NB(i),i, type_nameC,NC(i),i); } } fprintf(file1,"$\n$zvar\n"); for(i=2; i <= Atoms; i++) { switch(i) { case 2 : fprintf(file1,"r2= %12.7f\n",R(2)); break; case 3 : fprintf(file1,"r3= %12.7f a3= %12.7f\n", R(3), W(i)); break; default : fprintf(file1,"r%d= %12.7f a%d= %12.7f d%d= %12.7f\n", i,R(i), i,W(i), i,T(i)); break; } } if (strcmp(OutputKeywords,"KEYWORDS GO HERE") == 0) strcpy(OutputKeywords," "); fprintf(file1,"$\n$gen\n%s\n$\n",OutputKeywords); return(TRUE); }