Beispiel #1
0
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);
}
Beispiel #2
0
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;
}