int main(int argc,char* argv[]) { FILE* fp=NULL; //printf("no of argc=%d\n",argc); fp=argChk(argc,argv); if(fp == NULL || fp == 0) { fprintf(stderr, "Quitting the Program because - %s\n", strerror(errno)); exit(0); } My402List *list; //------creating a list-----// list=(My402List*)malloc(sizeof(My402List)); if(!My402ListInit(list)) { fprintf(stderr,"Error: Error in Initializing the list\n"); exit(0); } if(!Read_input(fp,list)) { printf("error\n"); exit(0); } if(list->num_members==0) { fprintf(stderr,"Error:Invalid input\n"); exit(0); } sort(list); display(list); fclose(fp); cleanup(list); return TRUE; }
int main() { int Num_particles; int struct_index; double cutoff; double force_constant; double energy_offset; double step_size; double step_size_reduction_factor; double rmsd_pathway; double delta_rmsd_zero; double energy_from_ref_tol; long int Max_num_iterations; FR_DAT fr_ref, fr_ref_for_alignment, fr_ts, fr_start, fr_end; double **pair_distances_structure; char Filename[1000]; int i; double *Reference_x, *Reference_y, *Reference_z; int Num_struct_written; FILE *out_num, *out; double energy_ref, rmsd_from_ref_final; long int iteration_number_end; int is_step_size_adequate; /********************************************************************************/ Read_input(&Num_particles, &struct_index, &cutoff, &force_constant, &energy_offset, &step_size, &step_size_reduction_factor, &rmsd_pathway, &delta_rmsd_zero, &energy_from_ref_tol, &Max_num_iterations); pair_distances_structure = (double**)malloc(Num_particles * sizeof(double*)); for(i = 0 ; i < Num_particles ; i++) { pair_distances_structure[i] = (double*)malloc(Num_particles * sizeof(double)); } fr_ref.natoms = Num_particles; fr_ref.x = (rvec*)malloc(Num_particles * sizeof(rvec)); fr_ref.f = (rvec*)malloc(Num_particles * sizeof(rvec)); fr_ref_for_alignment.natoms = Num_particles; fr_ref_for_alignment.x = (rvec*)malloc(Num_particles * sizeof(rvec)); fr_ts.natoms = Num_particles; fr_ts.x = (rvec*)malloc(Num_particles * sizeof(rvec)); fr_start.natoms = Num_particles; fr_start.x = (rvec*)malloc(Num_particles * sizeof(rvec)); fr_end.natoms = Num_particles; fr_end.x = (rvec*)malloc(Num_particles * sizeof(rvec)); fr_end.f = (rvec*)malloc(Num_particles * sizeof(rvec)); /*Lei's code uses array whose indices start from 1.*/ Reference_x = (double*)malloc((Num_particles + 1) * sizeof(double)); Reference_y = (double*)malloc((Num_particles + 1) * sizeof(double)); Reference_z = (double*)malloc((Num_particles + 1) * sizeof(double)); /********************************************************************************/ sprintf(Filename, "INPUT_STRUCTURE_%d", struct_index); Read_config_simple_3d(Num_particles, &fr_ref, Filename); sprintf(Filename, "minimized_struct_on_cusp"); Read_config_simple_3d(Num_particles, &fr_ts, Filename); sprintf(Filename, "REFERENCE_FOR_ALIGNMENT"); Read_config_simple_3d(Num_particles, &fr_ref_for_alignment, Filename); for(i = 0 ; i < Num_particles ; i++) { Reference_x[i+1] = fr_ref_for_alignment.x[i][0]; Reference_y[i+1] = fr_ref_for_alignment.x[i][1]; Reference_z[i+1] = fr_ref_for_alignment.x[i][2]; } //Align_two_structures_lei(Reference_x, Reference_y, Reference_z, &fr_ref); //Align_two_structures_lei(Reference_x, Reference_y, Reference_z, &fr_ts); Calc_pair_distances_one_structure(Num_particles, fr_ref, pair_distances_structure); for(i = 0 ; i < Num_particles ; i++) { fr_start.x[i][0] = fr_ts.x[i][0]; fr_start.x[i][1] = fr_ts.x[i][1]; fr_start.x[i][2] = fr_ts.x[i][2]; } is_step_size_adequate = 0; while(is_step_size_adequate == 0) { is_step_size_adequate = Check_step_size_offset(Num_particles, force_constant, cutoff, energy_offset, pair_distances_structure, Reference_x, Reference_y, Reference_z, rmsd_pathway, delta_rmsd_zero, &fr_start, step_size); if(is_step_size_adequate == 1) { printf("Step-size is %lf and it is adequate\n", step_size); } else { printf("Step-size is %lf and it is not adequate\n", step_size); step_size = step_size * step_size_reduction_factor; } } getforces_enm_offset(&fr_ref, pair_distances_structure, cutoff, force_constant, energy_offset); energy_ref = fr_ref.U; Num_struct_written = 0; Slide_down_single_step_size_offset(Num_particles, force_constant, cutoff, energy_offset, pair_distances_structure, Max_num_iterations, Reference_x, Reference_y, Reference_z, struct_index, rmsd_pathway, delta_rmsd_zero, &fr_ref, &fr_start, step_size, energy_ref, energy_from_ref_tol, &Num_struct_written, &fr_end, &iteration_number_end, step_size_reduction_factor); sprintf(Filename, "num_structures_written_%d", struct_index); out_num = fopen(Filename, "w"); fprintf(out_num, "%d\n", Num_struct_written); fclose(out_num); getforces_enm_offset(&fr_end, pair_distances_structure, cutoff, force_constant, energy_offset); rmsd_from_ref_final = Calc_rmsd_one_structure(&fr_ref, &fr_end); sprintf(Filename, "final_struct_info_%d", struct_index); out = fopen(Filename, "w"); fprintf(out, "Energy of the reference strucutre: %.8f\n", energy_ref); fprintf(out, "Number of iterations: %lu\n", iteration_number_end); fprintf(out, "Energy of final strucutre from minimization: %.8f\n", fr_end.U); fprintf(out, "RMSD of final strucutre from minimization from the reference strucutre: %.8f\n", rmsd_from_ref_final); fclose(out); sprintf(Filename, "final_struct_from_min_%d", struct_index); Write_config_simple(&fr_end, Filename); return 0; }