GRASS Programmer's Manual
6.4.2(2012)
Main Page
Related Pages
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
test_les.c
Go to the documentation of this file.
1
2
/*****************************************************************************
3
*
4
* MODULE: Grass PDE Numerical Library
5
* AUTHOR(S): Soeren Gebbert, Berlin (GER) Dec 2006
6
* soerengebbert <at> gmx <dot> de
7
*
8
* PURPOSE: Unit tests for les creation
9
*
10
* COPYRIGHT: (C) 2000 by the GRASS Development Team
11
*
12
* This program is free software under the GNU General Public
13
* License (>=v2). Read the file COPYING that comes with GRASS
14
* for details.
15
*
16
*****************************************************************************/
17
18
#include <grass/gis.h>
19
#include <grass/glocale.h>
20
#include <grass/N_pde.h>
21
#include "
test_gpde_lib.h
"
22
23
24
/* prototypes */
25
static
int
test_les(
void
);
26
27
/* *************************************************************** */
28
/* Perfrome the les creation tests ******************************* */
29
/* *************************************************************** */
30
int
unit_test_les_creation
(
void
)
31
{
32
int
sum = 0;
33
34
G_message
(_(
"\n++ Running les creation unit tests ++"
));
35
36
sum += test_les();
37
38
if
(sum > 0)
39
G_warning
(_(
"\n-- les creation unit tests failure --"
));
40
else
41
G_message
(_(
"\n-- les creation unit tests finished successfully --"
));
42
43
return
sum;
44
}
45
46
47
/* *************************************************************** */
48
/* test the les creation of normal and sparse matirces *********** */
49
/* *************************************************************** */
50
int
test_les(
void
)
51
{
52
N_spvector
*spvector =
NULL
;
53
N_les
*les =
NULL
;
54
N_les
*sples =
NULL
;
55
int
i, j;
56
57
58
les =
N_alloc_les
(
TEST_N_NUM_ROWS
,
N_NORMAL_LES
);
59
N_print_les
(les);
60
N_free_les
(les);
61
62
les =
N_alloc_les_A
(
TEST_N_NUM_ROWS
,
N_NORMAL_LES
);
63
N_print_les
(les);
64
N_free_les
(les);
65
66
les =
N_alloc_les_Ax
(
TEST_N_NUM_ROWS
,
N_NORMAL_LES
);
67
N_print_les
(les);
68
N_free_les
(les);
69
70
les =
N_alloc_les_Ax_b
(
TEST_N_NUM_ROWS
,
N_NORMAL_LES
);
71
N_print_les
(les);
72
N_free_les
(les);
73
74
les =
N_alloc_nquad_les
(6, 3,
N_NORMAL_LES
);
75
N_print_les
(les);
76
N_free_les
(les);
77
78
les =
N_alloc_nquad_les_A
(6, 3,
N_NORMAL_LES
);
79
N_print_les
(les);
80
N_free_les
(les);
81
82
les =
N_alloc_nquad_les_Ax
(6, 3,
N_NORMAL_LES
);
83
N_print_les
(les);
84
N_free_les
(les);
85
86
les =
N_alloc_nquad_les_Ax_b
(6, 3,
N_NORMAL_LES
);
87
N_print_les
(les);
88
N_free_les
(les);
89
90
91
les =
N_alloc_les
(
TEST_N_NUM_ROWS
,
N_NORMAL_LES
);
92
sples =
N_alloc_les
(
TEST_N_NUM_ROWS
,
N_SPARSE_LES
);
93
94
95
G_message
(_(
"\t * testing les creation in parallel\n"
));
96
#pragma omp parallel for private(i, j) shared(les)
97
for
(i = 0; i <
TEST_N_NUM_ROWS
; i++) {
98
for
(j = 0; j <
TEST_N_NUM_ROWS
; j++) {
99
if
(i != j)
100
les->
A
[i][j] = 2e-2;
101
les->
A
[i][i] = -1e2 - i;
102
}
103
les->
x
[i] = 273.15 + i;
104
les->
b
[i] = 1e2 - i;
105
}
106
107
#pragma omp parallel for private(i, j) shared(sples, spvector)
108
for
(i = 0; i <
TEST_N_NUM_ROWS
; i++) {
109
spvector =
N_alloc_spvector
(TEST_N_NUM_ROWS);
110
111
for
(j = 0; j <
TEST_N_NUM_ROWS
; j++)
112
if
(i != j)
113
spvector->
index
[j] = 2e-2;
114
115
spvector->
index
[0] = i;
116
spvector->
values
[0] = -1e2 - i;
117
118
N_add_spvector_to_les
(sples, spvector, i);
119
sples->
x
[i] = 273.15 + i;
120
sples->
b
[i] = 1e2 - i;
121
}
122
123
N_free_les
(les);
124
N_free_les
(sples);
125
126
G_message
(_(
"\t * testing les creation in serial\n"
));
127
128
les =
N_alloc_les
(TEST_N_NUM_ROWS,
N_NORMAL_LES
);
129
sples =
N_alloc_les
(TEST_N_NUM_ROWS,
N_SPARSE_LES
);
130
131
for
(i = 0; i <
TEST_N_NUM_ROWS
; i++) {
132
for
(j = 0; j <
TEST_N_NUM_ROWS
; j++) {
133
if
(i != j)
134
les->
A
[i][j] = 2e-2;
135
les->
A
[i][i] = -1e2 - i;
136
}
137
les->
x
[i] = 273.15 + i;
138
les->
b
[i] = 1e2 - i;
139
}
140
141
for
(i = 0; i <
TEST_N_NUM_ROWS
; i++) {
142
spvector =
N_alloc_spvector
(TEST_N_NUM_ROWS);
143
144
for
(j = 0; j <
TEST_N_NUM_ROWS
; j++)
145
if
(i != j)
146
spvector->
index
[j] = 2e-2;
147
148
spvector->
index
[0] = i;
149
spvector->
values
[0] = -1e2 - i;
150
151
N_add_spvector_to_les
(sples, spvector, i);
152
sples->
x
[i] = 273.15 + i;
153
sples->
b
[i] = 1e2 - i;
154
}
155
156
N_free_les
(les);
157
N_free_les
(sples);
158
159
return
0;
160
}
lib
gpde
test
test_les.c
Generated on Sun Mar 16 2014 05:07:48 for GRASS Programmer's Manual by
1.8.1.2