Esempio n. 1
0
static void calc_either_side(Crystal *cr, double incr_val,
                             int *valid, long double *vals[3], int refine,
                             PartialityModel pmodel)
{
	RefList *compare;
	struct image *image = crystal_get_image(cr);

	if ( (refine != REF_DIV) ) {

		Crystal *cr_new;

		/* Crystal properties */
		cr_new = new_shifted_crystal(cr, refine, -incr_val);
		compare = find_intersections(image, cr_new, pmodel);
		scan_partialities(crystal_get_reflections(cr), compare, valid,
		                  vals, 0, pmodel);
		cell_free(crystal_get_cell(cr_new));
		crystal_free(cr_new);
		reflist_free(compare);

		cr_new = new_shifted_crystal(cr, refine, +incr_val);
		compare = find_intersections(image, cr_new, pmodel);
		scan_partialities(crystal_get_reflections(cr), compare, valid,
		                  vals, 2, pmodel);
		cell_free(crystal_get_cell(cr_new));
		crystal_free(cr_new);
		reflist_free(compare);

	} else {

		struct image im_moved;

		/* "Image" properties */
		im_moved = *image;
		shift_parameter(&im_moved, refine, -incr_val);
		compare = find_intersections(&im_moved, cr, pmodel);
		scan_partialities(crystal_get_reflections(cr), compare,
		                  valid, vals, 0, pmodel);
		reflist_free(compare);

		im_moved = *image;
		shift_parameter(&im_moved, refine, +incr_val);
		compare = find_intersections(&im_moved, cr, pmodel);
		scan_partialities(crystal_get_reflections(cr), compare,
		                  valid, vals, 2, pmodel);
		reflist_free(compare);

	}
}
Esempio n. 2
0
int main(int narg, char *arg[])
{
    comm_ext world;
    struct comm comm;

#ifdef MPI
    MPI_Init(&narg,&arg);
    world = MPI_COMM_WORLD;
#else
    world=0;
#endif

    comm_init(&comm,world);
    id=comm.id, np=comm.np;

    lobatto_nodes(zr,NR),lobatto_nodes(zs,NS),lobatto_nodes(zt,NT);
    array_init(struct pt_data,&testp,NEL*MULD(TN,TN,TN));
    crystal_init(&cr,&comm);
    test(&comm);
    crystal_free(&cr);
    array_free(&testp);

    comm_free(&comm);

#ifdef MPI
    MPI_Finalize();
#endif

    return 0;
}
Esempio n. 3
0
void fcrystal_done(sint *h)
{
#ifdef MPI
  crystal_data *p = fcrystal_handle(*h);
  handle[*h]=0;
  MPI_Comm_free(&p->comm);
  crystal_free(p);
  free(p);
#endif  
}