Exemple #1
0
/* ************************************************************************* */
int compare_array_3d(N_array_3d * a, N_array_3d * b)
{
    int rows, cols, depths, type;
    int i, j, k, res = 0;

    rows = a->rows;
    cols = a->cols;
    depths = a->depths;
    type = N_get_array_3d_type(a);

    #pragma omp parallel for private (i, j, k) shared (depths, rows, cols, type, a, b) reduction(+:res)
    for (k = 0; k < depths; k++) {
        for (i = 0; i < rows; i++) {
            for (j = 0; j < cols; j++) {
                if (type == FCELL_TYPE) {
                    if (N_get_array_3d_f_value(a, i, j, k) !=
                            N_get_array_3d_f_value(b, i, j, k))
                        res++;
                }
                if (type == DCELL_TYPE) {
                    if (N_get_array_3d_d_value(a, i, j, k) !=
                            N_get_array_3d_d_value(b, i, j, k))
                        res++;
                }
            }
        }
    }

    return res;
}
Exemple #2
0
/* ************************************************************************* */
int fill_array_3d(N_array_3d * a)
{
    int rows, cols, depths, type;
    int i, j, k, res = 0;

    cols = a->cols;
    rows = a->rows;
    depths = a->depths;
    type = N_get_array_3d_type(a);

    #pragma omp parallel for private (i, j, k) shared (depths, rows, cols, type, a) reduction(+:res)
    for (k = 0; k < depths; k++) {
        for (j = 0; j < rows; j++) {
            for (i = 0; i < cols; i++) {
                if (type == FCELL_TYPE) {
                    N_put_array_3d_f_value(a, i, j, k,
                                           (float)i * (float)j * (float)k);
                    if (N_get_array_3d_f_value(a, i, j, k) !=
                            (float)i * (float)j * (float)k)
                        res++;
                }
                if (type == DCELL_TYPE) {
                    N_put_array_3d_d_value(a, i, j, k,
                                           (double)i * (double)j * (double)k);
                    if (N_get_array_3d_d_value(a, i, j, k) !=
                            (double)i * (double)j * (double)k)
                        res++;
                }
            }
        }
    }

    return res;
}
Exemple #3
0
/*!
 * \brief Write info and content of the array data to stdout
 *
 * Offsets are ignored
 *
 * \param data N_array_2d *
 * \return void
 * */
void N_print_array_3d(N_array_3d * data)
{
    int i, j, k;

    N_print_array_3d_info(data);

    for (k = 0; k < data->depths; k++) {
	for (j = 0; j < data->rows; j++) {
	    for (i = 0; i < data->cols; i++) {
		if (data->type == FCELL_TYPE)
		    printf("%6.6f ", N_get_array_3d_f_value(data, i, j, k));
		else if (data->type == DCELL_TYPE)
		    printf("%6.6f ", N_get_array_3d_d_value(data, i, j, k));
	    }
	    printf("\n");
	}
	printf("\n");
    }
    printf("\n");

    return;
}