GRASS GIS 7 Programmer's Manual  7.5.svn(2017)-r71759
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
n_arrays.c File Reference
#include <math.h>
#include <grass/N_pde.h>
#include <grass/raster.h>
#include <grass/glocale.h>
Include dependency graph for n_arrays.c:

Go to the source code of this file.

Functions

N_array_2dN_alloc_array_2d (int cols, int rows, int offset, int type)
 Allocate memory for a N_array_2d data structure. More...
 
void N_free_array_2d (N_array_2d *data)
 Release the memory of a N_array_2d structure. More...
 
int N_get_array_2d_type (N_array_2d *array)
 Return the data type of the N_array_2d struct. More...
 
void N_get_array_2d_value (N_array_2d *data, int col, int row, void *value)
 Write the value of the N_array_2d struct at position col, row to value. More...
 
int N_is_array_2d_value_null (N_array_2d *data, int col, int row)
 Returns 1 if the value of N_array_2d struct at position col, row is of type null, otherwise 0. More...
 
CELL N_get_array_2d_c_value (N_array_2d *data, int col, int row)
 Returns the value of type CELL at position col, row. More...
 
FCELL N_get_array_2d_f_value (N_array_2d *data, int col, int row)
 Returns the value of type FCELL at position col, row. More...
 
DCELL N_get_array_2d_d_value (N_array_2d *data, int col, int row)
 Returns the value of type DCELL at position col, row. More...
 
void N_put_array_2d_value (N_array_2d *data, int col, int row, char *value)
 Writes a value to the N_array_2d struct at position col, row. More...
 
void N_put_array_2d_value_null (N_array_2d *data, int col, int row)
 Writes the null value to the N_array_2d struct at position col, row. More...
 
void N_put_array_2d_c_value (N_array_2d *data, int col, int row, CELL value)
 Writes a CELL value to the N_array_2d struct at position col, row. More...
 
void N_put_array_2d_f_value (N_array_2d *data, int col, int row, FCELL value)
 Writes a FCELL value to the N_array_2d struct at position col, row. More...
 
void N_put_array_2d_d_value (N_array_2d *data, int col, int row, DCELL value)
 Writes a DCELL value to the N_array_2d struct at position col, row. More...
 
void N_print_array_2d_info (N_array_2d *data)
 This function writes the data info of the array data to stdout. More...
 
void N_print_array_2d (N_array_2d *data)
 Write info and content of the N_array_2d struct to stdout. More...
 
N_array_3dN_alloc_array_3d (int cols, int rows, int depths, int offset, int type)
 Allocate memory for a N_array_3d data structure. More...
 
void N_free_array_3d (N_array_3d *data)
 Release the memory of a N_array_3d. More...
 
int N_get_array_3d_type (N_array_3d *array)
 Return the data type of the N_array_3d. More...
 
void N_get_array_3d_value (N_array_3d *data, int col, int row, int depth, void *value)
 This function writes the value of N_array_3d data at position col, row, depth to the variable value. More...
 
int N_is_array_3d_value_null (N_array_3d *data, int col, int row, int depth)
 This function returns 1 if value of N_array_3d data at position col, row, depth is of type null, otherwise 0. More...
 
float N_get_array_3d_f_value (N_array_3d *data, int col, int row, int depth)
 This function returns the value of type float at position col, row, depth. More...
 
double N_get_array_3d_d_value (N_array_3d *data, int col, int row, int depth)
 This function returns the value of type float at position col, row, depth. More...
 
void N_put_array_3d_value (N_array_3d *data, int col, int row, int depth, char *value)
 This function writes a value to the N_array_3d data at position col, row, depth. More...
 
void N_put_array_3d_value_null (N_array_3d *data, int col, int row, int depth)
 This function writes a null value to the N_array_3d data at position col, row, depth. More...
 
void N_put_array_3d_f_value (N_array_3d *data, int col, int row, int depth, float value)
 This function writes a float value to the N_array_3d data at position col, row, depth. More...
 
void N_put_array_3d_d_value (N_array_3d *data, int col, int row, int depth, double value)
 Writes a double value to the N_array_3d struct at position col, row, depth. More...
 
void N_print_array_3d_info (N_array_3d *data)
 Write the info of the array to stdout. More...
 
void N_print_array_3d (N_array_3d *data)
 Write info and content of the array data to stdout. More...
 

Function Documentation

N_array_2d* N_alloc_array_2d ( int  cols,
int  rows,
int  offset,
int  type 
)

Allocate memory for a N_array_2d data structure.

This function allocates memory for an array of type N_array_2d and returns the pointer to the new allocated memory.

The data type of this array is set by "type" and must be CELL_TYPE, FCELL_TYPE or DCELL_TYPE accordingly to the raster map data types. The offset sets the number of boundary cols and rows. This option is useful to generate homogeneous Neumann boundary conditions around an array or to establish overlapping boundaries. The array is initialized with 0 by default.

If the offset is greater then 0, negative indices are possible.

The data structure of a array with 3 rows and cols and an offset of 1 will looks like this:

0 0 0 0 0
0 0 1 2 0
0 3 4 5 0
0 6 7 8 0
0 0 0 0 0

0 is the boundary.

Internal a one dimensional array is allocated to save memory and to speed up the memory access. To access the one dimensional array with a two dimensional index use the provided get and put functions. The internal representation of the above data will look like this:

0 0 0 0 0 0 0 1 2 0 0 3 4 5 0 0 6 7 8 0 0 0 0 0 0
Parameters
colsint
rowsint
offsetint
typeint
Returns
N_array_2d *

Definition at line 72 of file n_arrays.c.

References N_array_2d::cell_array, CELL_TYPE, N_array_2d::cols, N_array_2d::cols_intern, N_array_2d::dcell_array, DCELL_TYPE, N_array_2d::fcell_array, FCELL_TYPE, G_debug(), G_fatal_error(), NULL, N_array_2d::offset, N_array_2d::rows, N_array_2d::rows_intern, and N_array_2d::type.

Referenced by N_alloc_gradient_field_2d(), N_alloc_gwflow_data2d(), N_alloc_gwflow_data3d(), N_alloc_solute_transport_data2d(), N_assemble_les_2d_param(), N_math_array_2d(), and N_read_rast_to_array_2d().

N_array_3d* N_alloc_array_3d ( int  cols,
int  rows,
int  depths,
int  offset,
int  type 
)

Allocate memory for a N_array_3d data structure.

This functions allocates an array of type N_array_3d and returns a pointer to the new allocated memory.

The data type of this array set by "type" must be FCELL_TYPE or DCELL_TYPE accordingly to the raster3d map data types. The offsets sets the number of boundary cols, rows and depths. This option is useful to generate homogeneous Neumann boundary conditions around an array or to establish overlapping boundaries. The arrays are initialized with 0 by default.

If the offset is greater then 0, negative indices are possible. The data structure of a array with 3 depths, rows and cols and an offset of 1 will looks like this:

0  0  0  0  0
0  0  0  0  0
0  0  0  0  0
0  0  0  0  0
0  0  0  0  0

0  0  0  0  0
0  0  1  2  0
0  3  4  5  0
0  6  7  8  0
0  0  0  0  0

0  0  0  0  0
0  9 10 11  0
0 12 13 14  0
0 15 16 17  0
0  0  0  0  0

0  0  0  0  0
0 18 19 20  0
0 21 22 23  0
0 24 25 26  0
0  0  0  0  0

0  0  0  0  0
0  0  0  0  0
0  0  0  0  0
0  0  0  0  0
0  0  0  0  0

The depth counts from the bottom to the top.



Internal a one dimensional array is allocated to speed up the memory access. To access the dimensional array with a three dimensional indexing use the provided get and put functions.

Parameters
colsint
rowsint
depthsint
offsetint
typeint
Returns
N_array_3d *

Definition at line 726 of file n_arrays.c.

References N_array_3d::cols, N_array_3d::cols_intern, N_array_3d::dcell_array, DCELL_TYPE, N_array_3d::depths, N_array_3d::depths_intern, N_array_3d::fcell_array, FCELL_TYPE, G_debug(), G_fatal_error(), NULL, N_array_3d::offset, N_array_3d::rows, N_array_3d::rows_intern, and N_array_3d::type.

Referenced by N_alloc_gradient_field_3d(), N_alloc_gwflow_data3d(), N_alloc_solute_transport_data3d(), N_assemble_les_3d_param(), N_math_array_3d(), and N_read_rast3d_to_array_3d().

void N_free_array_3d ( N_array_3d data)
CELL N_get_array_2d_c_value ( N_array_2d data,
int  col,
int  row 
)

Returns the value of type CELL at position col, row.

The data array can be of type CELL, FCELL or DCELL, the value will be casted to the CELL type.

Parameters
dataN_array_2d *
colint
rowint
Returns
CELL

Definition at line 314 of file n_arrays.c.

References CELL_TYPE, DCELL_TYPE, FCELL_TYPE, N_get_array_2d_value(), and N_array_2d::type.

Referenced by N_assemble_les_2d_param(), N_gwflow_2d_calc_water_budget(), N_les_integrate_dirichlet_2d(), N_print_array_2d(), and N_write_array_2d_to_rast().

DCELL N_get_array_2d_d_value ( N_array_2d data,
int  col,
int  row 
)
FCELL N_get_array_2d_f_value ( N_array_2d data,
int  col,
int  row 
)

Returns the value of type FCELL at position col, row.

The data array can be of type CELL, FCELL or DCELL, the value will be casted to the FCELL type.

Parameters
dataN_array_2d *
colint
rowint
Returns
FCELL

Definition at line 346 of file n_arrays.c.

References CELL_TYPE, DCELL_TYPE, FCELL_TYPE, N_get_array_2d_value(), and N_array_2d::type.

Referenced by N_print_array_2d(), and N_write_array_2d_to_rast().

int N_get_array_2d_type ( N_array_2d array)

Return the data type of the N_array_2d struct.

The data type can be CELL_TYPE, FCELL_TYPE or DCELL_TYPE accordingly to the raster map data types.

Parameters
arrayN_array_2d *
Returns
type int

Definition at line 164 of file n_arrays.c.

References N_array_2d::type.

void N_get_array_2d_value ( N_array_2d data,
int  col,
int  row,
void *  value 
)

Write the value of the N_array_2d struct at position col, row to value.

The value must be of the same type as the array. Otherwise you will risk data losses.

Parameters
dataN_array_2d *
colint
rowint
valuevoid * - this variable contains the array value at col, row position
Returns
void

Definition at line 181 of file n_arrays.c.

References N_array_2d::cell_array, CELL_TYPE, N_array_2d::cols_intern, N_array_2d::dcell_array, DCELL_TYPE, N_array_2d::fcell_array, FCELL_TYPE, NULL, N_array_2d::offset, and N_array_2d::type.

Referenced by N_get_array_2d_c_value(), N_get_array_2d_d_value(), and N_get_array_2d_f_value().

double N_get_array_3d_d_value ( N_array_3d data,
int  col,
int  row,
int  depth 
)

This function returns the value of type float at position col, row, depth.

The data type can be FCELL_TYPE or DCELL_TYPE accordingly to the raster map data types.

Parameters
dataN_array_3d *
colint
rowint
depthint
Returns
double

Definition at line 990 of file n_arrays.c.

References DCELL_TYPE, FCELL_TYPE, N_get_array_3d_value(), and N_array_3d::type.

Referenced by N_assemble_les_3d_param(), N_calc_array_3d_stats(), N_callback_gwflow_3d(), N_callback_solute_transport_3d(), N_compute_gradient_field_3d(), N_get_gradient_3d(), N_gwflow_3d_calc_water_budget(), N_les_integrate_dirichlet_3d(), N_math_array_3d(), N_print_array_3d(), and N_write_array_3d_to_rast3d().

float N_get_array_3d_f_value ( N_array_3d data,
int  col,
int  row,
int  depth 
)

This function returns the value of type float at position col, row, depth.

The data type can be FCELL_TYPE or DCELL_TYPE accordingly to the raster map data types.

Parameters
dataN_array_3d *
colint
rowint
depthint
Returns
float

Definition at line 961 of file n_arrays.c.

References DCELL_TYPE, FCELL_TYPE, N_get_array_3d_value(), and N_array_3d::type.

Referenced by N_print_array_3d(), and N_write_array_3d_to_rast3d().

int N_get_array_3d_type ( N_array_3d array)

Return the data type of the N_array_3d.

The data type can be FCELL_TYPE and DCELL_TYPE accordingly to the raster map data types.

Parameters
arrayN_array_3d *
Returns
type int – FCELL_TYPE or DCELL_TYPE

Definition at line 809 of file n_arrays.c.

References N_array_3d::type.

void N_get_array_3d_value ( N_array_3d data,
int  col,
int  row,
int  depth,
void *  value 
)

This function writes the value of N_array_3d data at position col, row, depth to the variable value.

The value must be from the same type as the array. Otherwise you will risk data losses.

Parameters
dataN_array_3d *
colint
rowint
depthint
valuevoid *
Returns
void

Definition at line 829 of file n_arrays.c.

References N_array_3d::cols_intern, N_array_3d::dcell_array, DCELL_TYPE, N_array_3d::fcell_array, FCELL_TYPE, NULL, N_array_3d::offset, N_array_3d::rows_intern, and N_array_3d::type.

Referenced by N_get_array_3d_d_value(), and N_get_array_3d_f_value().

int N_is_array_2d_value_null ( N_array_2d data,
int  col,
int  row 
)

Returns 1 if the value of N_array_2d struct at position col, row is of type null, otherwise 0.

This function checks automatically the type of the array and checks for the data type null value.

Parameters
dataN_array_2d *
colint
rowint
Returns
int - 1 = is null, 0 otherwise

Definition at line 231 of file n_arrays.c.

References N_array_2d::cell_array, CELL_TYPE, N_array_2d::cols_intern, N_array_2d::dcell_array, DCELL_TYPE, N_array_2d::fcell_array, FCELL_TYPE, G_debug(), NULL, N_array_2d::offset, Rast_is_null_value(), and N_array_2d::type.

Referenced by N_calc_array_2d_stats(), N_calc_solute_transport_transmission_2d(), N_compute_gradient_field_2d(), and N_math_array_2d().

int N_is_array_3d_value_null ( N_array_3d data,
int  col,
int  row,
int  depth 
)

This function returns 1 if value of N_array_3d data at position col, row, depth is of type null, otherwise 0.

This function checks automatically the type of the array and checks for the data type null value.

Parameters
dataN_array_3d *
colint
rowint
depthint
Returns
void

Definition at line 881 of file n_arrays.c.

References N_array_3d::cols_intern, N_array_3d::dcell_array, DCELL_TYPE, N_array_3d::fcell_array, FCELL_TYPE, G_debug(), NULL, N_array_3d::offset, Rast3d_is_null_value_num(), N_array_3d::rows_intern, and N_array_3d::type.

Referenced by N_calc_array_3d_stats(), N_compute_gradient_field_3d(), and N_math_array_3d().

void N_print_array_2d ( N_array_2d data)

Write info and content of the N_array_2d struct to stdout.

Offsets are ignored

Parameters
dataN_array_2d *
Returns
void

Definition at line 637 of file n_arrays.c.

References CELL_TYPE, DCELL_TYPE, FCELL_TYPE, N_get_array_2d_c_value(), N_get_array_2d_d_value(), N_get_array_2d_f_value(), N_print_array_2d_info(), N_array_2d::offset, and N_array_2d::type.

void N_print_array_2d_info ( N_array_2d data)

This function writes the data info of the array data to stdout.

Parameters
dataN_array_2d *
Returns
void

Definition at line 611 of file n_arrays.c.

References N_array_2d::cell_array, N_array_2d::cols, N_array_2d::cols_intern, N_array_2d::dcell_array, N_array_2d::fcell_array, N_array_2d::offset, N_array_2d::rows, N_array_2d::rows_intern, and N_array_2d::type.

Referenced by N_print_array_2d(), and N_print_gradient_field_2d_info().

void N_print_array_3d ( N_array_3d data)

Write info and content of the array data to stdout.

Offsets are ignored

Parameters
dataN_array_2d *
Returns
void

Definition at line 1223 of file n_arrays.c.

References N_array_3d::cols, DCELL_TYPE, N_array_3d::depths, FCELL_TYPE, N_get_array_3d_d_value(), N_get_array_3d_f_value(), N_print_array_3d_info(), N_array_3d::rows, and N_array_3d::type.

void N_print_array_3d_info ( N_array_3d data)
void N_put_array_2d_c_value ( N_array_2d data,
int  col,
int  row,
CELL  value 
)

Writes a CELL value to the N_array_2d struct at position col, row.

Parameters
dataN_array_2d *
colint
rowint
valueCELL
Returns
void

Definition at line 524 of file n_arrays.c.

References DCELL_TYPE, FCELL_TYPE, N_put_array_2d_value(), and N_array_2d::type.

Referenced by N_assemble_les_2d_param(), N_math_array_2d(), and N_read_rast_to_array_2d().

void N_put_array_2d_d_value ( N_array_2d data,
int  col,
int  row,
DCELL  value 
)
void N_put_array_2d_f_value ( N_array_2d data,
int  col,
int  row,
FCELL  value 
)

Writes a FCELL value to the N_array_2d struct at position col, row.

Parameters
dataN_array_2d *
colint
rowint
valueFCELL
Returns
void

Definition at line 554 of file n_arrays.c.

References CELL_TYPE, DCELL_TYPE, N_put_array_2d_value(), and N_array_2d::type.

Referenced by N_math_array_2d(), and N_read_rast_to_array_2d().

void N_put_array_2d_value ( N_array_2d data,
int  col,
int  row,
char *  value 
)

Writes a value to the N_array_2d struct at position col, row.

The value will be automatically cast to the array type.

Parameters
dataN_array_2d *
colint
rowint
valuechar *
Returns
void

Definition at line 411 of file n_arrays.c.

References N_array_2d::cell_array, CELL_TYPE, N_array_2d::cols_intern, N_array_2d::dcell_array, DCELL_TYPE, N_array_2d::fcell_array, FCELL_TYPE, G_debug(), NULL, N_array_2d::offset, and N_array_2d::type.

Referenced by N_put_array_2d_c_value(), N_put_array_2d_d_value(), and N_put_array_2d_f_value().

void N_put_array_2d_value_null ( N_array_2d data,
int  col,
int  row 
)

Writes the null value to the N_array_2d struct at position col, row.

The null value will be automatically set to the array data type (CELL, FCELL or DCELL).

Parameters
dataN_array_2d *
colint
rowint
Returns
void

Definition at line 458 of file n_arrays.c.

References N_array_2d::cell_array, CELL_TYPE, N_array_2d::cols_intern, N_array_2d::dcell_array, DCELL_TYPE, N_array_2d::fcell_array, FCELL_TYPE, G_debug(), NULL, N_array_2d::offset, Rast_set_c_null_value(), Rast_set_d_null_value(), Rast_set_f_null_value(), and N_array_2d::type.

Referenced by N_math_array_2d(), and N_read_rast_to_array_2d().

void N_put_array_3d_d_value ( N_array_3d data,
int  col,
int  row,
int  depth,
double  value 
)

Writes a double value to the N_array_3d struct at position col, row, depth.

Parameters
dataN_array_3d *
colint
rowint
depthint
valuedouble
Returns
void

Definition at line 1175 of file n_arrays.c.

References FCELL_TYPE, N_put_array_3d_value(), and N_array_3d::type.

Referenced by N_assemble_les_3d_param(), N_calc_solute_transport_disptensor_3d(), N_compute_gradient_field_3d(), N_compute_gradient_field_components_3d(), N_gwflow_3d_calc_water_budget(), N_math_array_3d(), and N_read_rast3d_to_array_3d().

void N_put_array_3d_f_value ( N_array_3d data,
int  col,
int  row,
int  depth,
float  value 
)

This function writes a float value to the N_array_3d data at position col, row, depth.

Parameters
dataN_array_3d *
colint
rowint
depthint
valuefloat
Returns
void

Definition at line 1148 of file n_arrays.c.

References DCELL_TYPE, N_put_array_3d_value(), and N_array_3d::type.

Referenced by N_math_array_3d(), and N_read_rast3d_to_array_3d().

void N_put_array_3d_value ( N_array_3d data,
int  col,
int  row,
int  depth,
char *  value 
)

This function writes a value to the N_array_3d data at position col, row, depth.

The value will be automatically cast to the array type.

Parameters
dataN_array_3d *
colint
rowint
depthint
valuecahr *
Returns
void

Definition at line 1021 of file n_arrays.c.

References N_array_3d::cols_intern, N_array_3d::dcell_array, DCELL_TYPE, N_array_3d::fcell_array, FCELL_TYPE, G_debug(), NULL, N_array_3d::offset, N_array_3d::rows_intern, and N_array_3d::type.

Referenced by N_put_array_3d_d_value(), and N_put_array_3d_f_value().

void N_put_array_3d_value_null ( N_array_3d data,
int  col,
int  row,
int  depth 
)

This function writes a null value to the N_array_3d data at position col, row, depth.

The null value will be automatically set to the array type.

Parameters
dataN_array_3d *
colint
rowint
depthint
Returns
void

Definition at line 1076 of file n_arrays.c.

References N_array_3d::cols_intern, N_array_3d::dcell_array, DCELL_TYPE, N_array_3d::fcell_array, FCELL_TYPE, G_debug(), NULL, N_array_3d::offset, Rast3d_set_null_value(), N_array_3d::rows_intern, and N_array_3d::type.

Referenced by N_math_array_3d(), and N_read_rast3d_to_array_3d().