23 #include <grass/glocale.h>
24 #include <grass/N_pde.h>
28 static int test_gradient_2d(
void);
29 static int test_gradient_3d(
void);
30 static N_array_2d *create_relax_array_2d(
void);
31 static N_array_3d *create_relax_array_3d(
void);
32 static N_array_2d *create_potential_array_2d(
void);
33 static N_array_3d *create_potential_array_3d(
void);
42 G_message(_(
"\n++ Running gradient unit tests ++"));
44 G_message(_(
"\t 1. testing 2d gradient"));
45 sum += test_gradient_2d();
47 G_message(_(
"\t 2. testing 3d gradient"));
48 sum += test_gradient_3d();
51 G_warning(_(
"\n-- Gradient unit tests failure --"));
53 G_message(_(
"\n-- Gradient unit tests finished successfully --"));
68 #pragma omp parallel for private (i, j) shared (data)
87 #pragma omp parallel for private (i, j) shared (data)
108 #pragma omp parallel for private (i, j, k) shared (data)
133 #pragma omp parallel for private (i, j, k) shared (data)
148 int test_gradient_3d(
void)
173 relax = create_relax_array_3d();
174 pot = create_potential_array_3d();
276 (
"Gradient 3d: NC %g == 0 ; SC %g == 2 ; WC %g == 0 ; EC %g == -1 BC %g == 0 TC %g == -0.2\n",
277 grad->
NC, grad->
SC, grad->
WC, grad->
EC, grad->
BC, grad->
TC);
281 (
"Gradient 3d: NC %g == 0 ; SC %g == 5 ; WC %g == -1 ; EC %g == -4 BC %g == 0 TC %g == -0.2\n",
282 grad->
NC, grad->
SC, grad->
WC, grad->
EC, grad->
BC, grad->
TC);
287 (
"Gradient 3d: NC %g == 5 ; SC %g == 8 ; WC %g == -4 ; EC %g == -3 BC %g == -0.2 TC %g == -0.3\n",
288 grad->
NC, grad->
SC, grad->
WC, grad->
EC, grad->
BC, grad->
TC);
292 (
"Gradient 3d: NC %g == 8 ; SC %g == 0 ; WC %g == -7 ; EC %g == -10 BC %g == -0.3 TC %g == 0\n",
293 grad->
NC, grad->
SC, grad->
WC, grad->
EC, grad->
BC, grad->
TC);
298 (
"Gradient 3d: NC %g ==15 ; SC %g == 0 ; WC %g == -10 ; EC %g == 0 BC %g == -0.3 TC %g == 0\n",
299 grad->
NC, grad->
SC, grad->
WC, grad->
EC, grad->
BC, grad->
TC);
326 int test_gradient_2d(
void)
350 relax = create_relax_array_2d();
351 pot = create_potential_array_2d();
407 (
"Gradient 2d: pos 0,0 NC %g == 0 ; SC %g == 2 ; WC %g == 0 ; EC %g == -1\n",
408 grad->
NC, grad->
SC, grad->
WC, grad->
EC);
412 (
"Gradient 2d: pos 1,0 NC %g == 0 ; SC %g == 5 ; WC %g == -1 ; EC %g == -4\n",
413 grad->
NC, grad->
SC, grad->
WC, grad->
EC);
418 (
"Gradient 2d: pos 1,1 NC %g == 5 ; SC %g == 8 ; WC %g == -4 ; EC %g == -3\n",
419 grad->
NC, grad->
SC, grad->
WC, grad->
EC);
423 (
"Gradient 2d: pos 1,2 NC %g == 8 ; SC %g == 0 ; WC %g == -7 ; EC %g == -10\n",
424 grad->
NC, grad->
SC, grad->
WC, grad->
EC);
429 (
"Gradient 2d: pos 2,2 NC %g ==15 ; SC %g == 0 ; WC %g == -10 ; EC %g == 0\n",
430 grad->
NC, grad->
SC, grad->
WC, grad->
EC);
439 (
"N_gradient_neighbours_x; pos 1,1 NWN %g NEN %g WC %g EC %g SWS %g SES %g\n",
443 (
"N_gradient_neighbours_y: pos 1,1 NWW %g NEE %g NC %g SC %g SWW %g SEE %g\n",