void free_preconditioner(struct preconditioner *precon, int id) { if (id == 0) { free_3d_array(precon->inverse_mass); for (int i = 0; i < precon->nlevels; ++i) { free_3d_array(precon->poisson_diag[i]); free_3d_array(precon->helmholtz_diag[i]); free_3d_array(precon->stiffsum_scale[i]); free_3d_array(precon->dirichlet_mask[i]); } } for (int i = 1; i < precon->nlevels; ++i) { if (precon->geom[i]) free_geometry(precon->geom[i]); if (precon->sendcounts[i]) free_int_array(precon->sendcounts[i]); if (precon->senddispls[i]) free_int_array(precon->senddispls[i]); } for (int i = 1; i < (2 * precon->nlevels - 1); ++i) if (precon->basis[i]) free_basis(precon->basis[i]); free_ptr_array(precon->basis, 0, NULL); free_ptr_array(precon->geom, 0, NULL); free_ptr_array(precon->poisson_diag, 0, NULL); free_ptr_array(precon->helmholtz_diag, 0, NULL); free_ptr_array(precon->stiffsum_scale, 0, NULL); free_ptr_array(precon->dirichlet_mask, 0, NULL); free_ptr_array(precon->sendcounts, 0, NULL); free_ptr_array(precon->senddispls, 0, NULL); free_int_array(precon->nmg); free_1d_array(precon->poisson_eigen_max); free_1d_array(precon->helmholtz_eigen_max); free(precon); }
int give_calHunters() { int message = 0, cal = 0, hunters=0, hero=-1,cal_per=0; int_array clan_list; init_int_array (&clan_list); // Recivir partida de cazadores START_INFOHUNTER_MESSAGE_LOOP hunters += infoHunter_message->hunters; add_int(&clan_list,infoHunter_message->clans[0]); add_int(&clan_list,infoHunter_message->clans[1]); message ++; FINISH_INFOHUNTER_MESSAGE_LOOP if (message > 0) { // Calcular las calorias obtenidas segun la cantidad de guanacos cazados cal =60000 *(rand()%get_adultos()); // Eliminar a los guanacos cazados // Determinar quien acaba con mas guanacos de forma aleatoria hero = rand()%clan_list.size; // Repartir calorias obtenidas por personas. Despues cada partida // calcula segun su num de miembros, las cal que les coresponden cal_per = cal / hunters; add_repCal_message(get_x(),get_y(),cal_per); } free_int_array (&clan_list); return 0; }