Exemple #1
0
CALreal calGetNextX3Dr(struct CALModel3D* ca3D, struct CALSubstate3Dr* Q, int i, int j, int k, int n)
{
    if (ca3D->T == CAL_SPACE_FLAT)
        return calGetBuffer3DElement(Q->next, ca3D->rows, ca3D->columns, i + ca3D->X[n].i, j + ca3D->X[n].j, k + ca3D->X[n].k);
    else
        return calGetBuffer3DElement(Q->next, ca3D->rows, ca3D->columns, calGetToroidalX(i + ca3D->X[n].i, ca3D->rows), calGetToroidalX(j + ca3D->X[n].j, ca3D->columns), calGetToroidalX(k + ca3D->X[n].k, ca3D->columns));
}
Exemple #2
0
void calSetX3Di(struct CALModel3D* ca3D, struct CALSubstate3Di* Q, int i, int j, int k, int n, CALint value)
{
    if (ca3D->T == CAL_SPACE_FLAT)
        calSetBuffer3DElement(Q->next, ca3D->rows, ca3D->columns, i + ca3D->X[n].i, j + ca3D->X[n].j, k + ca3D->X[n].k, value);
    else
        calSetBuffer3DElement(Q->next, ca3D->rows, ca3D->columns, calGetToroidalX(i + ca3D->X[n].i, ca3D->rows), calGetToroidalX(j + ca3D->X[n].j, ca3D->columns), calGetToroidalX(k + ca3D->X[n].k, ca3D->slices), value);
}
Exemple #3
0
void calAddActiveCellX3D(struct CALModel3D* ca3D, int i, int j, int k, int n)
{
    if (ca3D->T == CAL_SPACE_FLAT)
    {
        if(ca3D->OPTIMIZATION == CAL_OPT_ACTIVE_CELLS_NAIVE)
            calAddActiveCellNaive3D(ca3D->A, (i + ca3D->X[n].i), (j + ca3D->X[n].j), (k + ca3D->X[n].k), ca3D->columns, ca3D->rows);
        else if(ca3D->OPTIMIZATION == CAL_OPT_ACTIVE_CELLS)
            calAddActiveCellCLL3D(ca3D, (i + ca3D->X[n].i), (j + ca3D->X[n].j), (k + ca3D->X[n].k));
    }
    else
    {
        if(ca3D->OPTIMIZATION == CAL_OPT_ACTIVE_CELLS_NAIVE)
            calAddActiveCellNaive3D(ca3D->A, calGetToroidalX(i + ca3D->X[n].i, ca3D->rows), calGetToroidalX(j + ca3D->X[n].j, ca3D->columns), calGetToroidalX(k + ca3D->X[n].k, ca3D->slices), ca3D->columns, ca3D->rows);
        else if(ca3D->OPTIMIZATION == CAL_OPT_ACTIVE_CELLS)
            calAddActiveCellCLL3D(ca3D, calGetToroidalX(i + ca3D->X[n].i, ca3D->rows), calGetToroidalX(j + ca3D->X[n].j, ca3D->columns), calGetToroidalX(k + ca3D->X[n].k, ca3D->slices));
    }
}
Exemple #4
0
CALreal calGetX2Dr(MODEL_DEFINITION2D, int i, int j, int n,CALint substateNum) {
	__global CALreal * current = calGetCurrentSubstate2Dr(MODEL2D,substateNum);
	if ((get_neighborhood_id() == CAL_HEXAGONAL_NEIGHBORHOOD_2D && j % 2 == 1) || (get_neighborhood_id() == CAL_HEXAGONAL_NEIGHBORHOOD_ALT_2D && i % 2 == 1))
		n += CAL_HEXAGONAL_SHIFT;

	if (get_boundary_condition() == CAL_SPACE_FLAT)
		return calGetBufferElement2D(current, get_columns(), i + CALCLneighborhood[n].i, j + CALCLneighborhood[n].j);
	else
		return calGetBufferElement2D(current, get_columns(), calGetToroidalX(i + CALCLneighborhood[n].i, get_rows()), calGetToroidalX(j + CALCLneighborhood[n].j, get_columns()));
}