Exemplo n.º 1
0
void
get_force_grape(int ni, double (*xi)[3], int nj, double (*xj)[3], double *mj,
		double eps, double (*a)[3], double *p)
{
    int offs, offr, nii, c, c0, i, np, nc, k;

    if (JMEMSIZE < nj) {
	fprintf(stderr, "nj: %d exceeded GRAPE-5 JMEMSIZE (%d)\n", nj, JMEMSIZE);
	exit(1);
    }
    if (!grape_is_opened()) {
	grape_open();
    }
    g5_set_mj(0, nj, mj);
    g5_set_xj(0, nj, xj);
    g5_set_n(nj);
    g5_set_eps_to_all(eps);

    g5_calculate_force_on_x(xi, a, p, ni);

    for (i = 0; i < ni; i++) {
	p[i] *= -1;
    }
    if (vtc_get_cputime()-grape_holdtime() > 150.0) {
	grape_close();
    }

    i = 10;
    fprintf(stderr, "!!! nj: %d a: %f %f %f p: %f\n",
	    nj, a[i][0], a[i][1], a[i][2], p[i]);
}
Exemplo n.º 2
0
void FNAME(g5_set_eps_to_all)(double *eps)
{
    g5_set_eps_to_all(*eps);
}
Exemplo n.º 3
0
void
get_force_grape(int ni, double (*xi)[3], int nj, double (*xj)[3], double *mj,
		double eps, double (*a)[3], double *p)
{
    int offs, offr, nii, c, c0, i, np, nc, k;

    if (JMEMSIZE < nj) {
	fprintf(stderr, "nj: %d exceeded GRAPE-5 JMEMSIZE (%d)\n", nj, JMEMSIZE);
	exit(1);
    }
    if (!grape_is_opened()) {
	grape_open();
    }
    np = g5_get_number_of_pipelines_per_board();
    nc = g5_get_number_of_boards();
    c0 = g5_get_firstcluster();

    //    g5_set_range(-100.0, 100.0, 1.0/4096);

    g5_set_mj(0, nj, mj);
    g5_set_xj(0, nj, xj);
    g5_set_n(nj);
    g5_set_eps_to_all(eps);

    offs = 0;
    for (c = c0; c < nc+c0 && offs < ni; c++) {
	nii = np;
	if (offs+nii > ni) {
	    nii = ni - offs;
	}
	g5_set_xiMC(c, nii, (double (*)[3])xi[offs]);
	g5_runMC(c);
	offs += nii;
    }

    for (offr = 0; offr < ni;) {
	for (c = c0; c < nc+c0; c++) {
	    if (offr < ni) {
		nii = np;
		if (offr+nii > ni) {
		    nii = ni - offr;
		}
		g5_get_forceMC(c, nii, (double (*)[3])a[offr], &p[offr]);
		offr += nii;
	    }
	    if (offs < ni) {
		nii = np;
		if (offs+nii > ni) {
		    nii = ni - offs;
		}
		g5_set_xiMC(c, nii, (double (*)[3])xi[offs]);
		g5_runMC(c);
		offs += nii;
	    }
	}
    }
    for (i = 0; i < ni; i++) {
	p[i] *= -1;
    }
    if (vtc_get_cputime()-grape_holdtime() > 150.0) {
	grape_close();
    }
}