Ejemplo n.º 1
0
struct reb_aabb reb_communication_boundingbox_for_proc(struct reb_simulation* const r, int proc_id){
	int root_n_per_node = r->root_n/r->mpi_num;
	int root_start = proc_id*root_n_per_node;
	int root_stop  = (proc_id+1)*root_n_per_node;
	struct reb_aabb boundingbox = communication_boundingbox_for_root(r, root_start);
	for (int i=root_start+1;i<root_stop;i++){
		struct reb_aabb boundingbox2 = communication_boundingbox_for_root(r,i);
		if (boundingbox.xmin > boundingbox2.xmin) boundingbox.xmin = boundingbox2.xmin;
		if (boundingbox.ymin > boundingbox2.ymin) boundingbox.ymin = boundingbox2.ymin;
		if (boundingbox.zmin > boundingbox2.zmin) boundingbox.zmin = boundingbox2.zmin;
		if (boundingbox.xmax < boundingbox2.xmax) boundingbox.xmax = boundingbox2.xmax;
		if (boundingbox.ymax < boundingbox2.ymax) boundingbox.ymax = boundingbox2.ymax;
		if (boundingbox.zmax < boundingbox2.zmax) boundingbox.zmax = boundingbox2.zmax;
	}
	return boundingbox;
}
Ejemplo n.º 2
0
struct aabb communication_boundingbox_for_proc(int proc_id){
	int root_n_per_node = root_n/mpi_num;
	int root_start = proc_id*root_n_per_node;
	int root_stop  = (proc_id+1)*root_n_per_node;
	struct aabb boundingbox = communication_boundingbox_for_root(root_start);
	for (int i=root_start+1;i<root_stop;i++){
		struct aabb boundingbox2 = communication_boundingbox_for_root(i);
		if (boundingbox.xmin > boundingbox2.xmin) boundingbox.xmin = boundingbox2.xmin;
		if (boundingbox.ymin > boundingbox2.ymin) boundingbox.ymin = boundingbox2.ymin;
		if (boundingbox.zmin > boundingbox2.zmin) boundingbox.zmin = boundingbox2.zmin;
		if (boundingbox.xmax < boundingbox2.xmax) boundingbox.xmax = boundingbox2.xmax;
		if (boundingbox.ymax < boundingbox2.ymax) boundingbox.ymax = boundingbox2.ymax;
		if (boundingbox.zmax < boundingbox2.zmax) boundingbox.zmax = boundingbox2.zmax;
	}
	return boundingbox;
}