void test_validate ( void ) { int fail; printf("\nCalling Newton validation in PHCpack...\n"); fail = read_standard_start_system(); fail = define_output_file(); printf("\nSee the output file results ...\n\n"); fail = copy_start_system_to_container(); fail = copy_start_solutions_to_container(); fail = validate_solutions(); }
int monodromy_breakup ( int myid, int n, int dim, int deg, int nbloops, int numprocs, double *trackwtime ) { int mysolnum,i,done,fail; if(v>0) printf("Node %d knows n = %d, #loops = %d.\n",myid,n,nbloops); monomials_broadcast(myid,n); MPI_Bcast(°,1,MPI_INT,0,MPI_COMM_WORLD); if(v>0) printf("Node %d went through bcast of degree %d.\n",myid,deg); solutions_distribute(myid,deg,n,numprocs,&mysolnum); MPI_Bcast(&dim,1,MPI_INT,0,MPI_COMM_WORLD); fail = initialize_standard_sampler(dim); if(myid == 0) { fail = validate_solutions(); /* sanity check */ fail = initialize_standard_monodromy(nbloops,deg,dim); /* initialize traces */ if(v>1) print_solutions(myid); fail = store_standard_solutions(); } for(i=1; i<=2; i++) { if((v>0)&&(myid == 0)) printf("slice %d for linear trace...\n",i); trace_slice_broadcast(myid,i); gamma_broadcast(myid,n); f_track_paths(myid,deg,n,numprocs,mysolnum,trackwtime); if(myid == 0) { fail = store_standard_solutions(); fail = restore_standard_solutions(); } solutions_distribute(myid,deg,n,numprocs,&mysolnum); if(myid == 0) f_swap_slices(myid); } slices_broadcast(myid,dim,n); for(i=0; i<nbloops; i++) { if((v>0)&&(myid == 0)) printf("Starting loop #\%d...\n",i); gamma_broadcast(myid,n); f_track_paths(myid,deg,n,numprocs,mysolnum,trackwtime); if(myid != 0) f_swap_slices(myid); if(myid == 0) { if(v>1) print_solutions(myid); solcon_clear_standard_solutions(); } gamma_broadcast(myid,n); f_track_paths(myid,deg,n,numprocs,mysolnum,trackwtime); if(myid == 0) { if(v>1) print_solutions(myid); fail = store_standard_solutions(); fail = standard_monodromy_permutation(deg,&done); solcon_clear_standard_solutions(); } MPI_Bcast(&done,1,MPI_INT,0,MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); /* every node must know if done */ if(done == 1) { if (v>0) printf("Node %d leaves the loop at step %d.\n", myid,i+1); if(myid == 0) printf("Executed %d monodromy loops.\n", i+1); return 0; } else { if(myid != 0) f_swap_slices(myid); slices_broadcast(myid,dim,n); /* new slices */ if(myid == 0) fail = restore_standard_solutions(); MPI_Bcast(°,1,MPI_INT,0,MPI_COMM_WORLD); solutions_distribute(myid,deg,n,numprocs,&mysolnum); } } if(myid == 0) printf("Executed %d monodromy loops.\n", i+1); return 1; }