GRASS GIS 8 Programmer's Manual  8.5.0dev(2024)-d6dec75dd4
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_alloc_array_2d()

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 75 of file n_arrays.c.

Referenced by N_alloc_gradient_field_2d().

◆ N_alloc_array_3d()

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 719 of file n_arrays.c.

Referenced by N_alloc_gradient_field_3d().

◆ N_free_array_2d()

void N_free_array_2d ( N_array_2d data)

Release the memory of a N_array_2d structure.

Parameters
dataN_array_2d *
Returns
void

Definition at line 132 of file n_arrays.c.

Referenced by N_free_gradient_field_2d().

◆ N_free_array_3d()

void N_free_array_3d ( N_array_3d data)

Release the memory of a N_array_3d.

Parameters
dataN_array_3d *
Returns
void

Definition at line 774 of file n_arrays.c.

Referenced by N_free_gradient_field_3d().

◆ N_get_array_2d_c_value()

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.

Referenced by N_les_integrate_dirichlet_2d().

◆ N_get_array_2d_d_value()

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.

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

Parameters
dataN_array_2d *
colint
rowint
Returns
DCELL

Definition at line 380 of file n_arrays.c.

Referenced by N_compute_gradient_field_2d(), N_get_gradient_2d(), N_get_gradient_neighbours_2d(), and N_les_integrate_dirichlet_2d().

◆ N_get_array_2d_f_value()

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 347 of file n_arrays.c.

◆ N_get_array_2d_type()

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.

◆ N_get_array_2d_value()

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 182 of file n_arrays.c.

◆ N_get_array_3d_d_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 979 of file n_arrays.c.

Referenced by N_compute_gradient_field_3d(), and N_les_integrate_dirichlet_3d().

◆ N_get_array_3d_f_value()

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 948 of file n_arrays.c.

◆ N_get_array_3d_type()

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 803 of file n_arrays.c.

References N_array_3d::type.

◆ N_get_array_3d_value()

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 822 of file n_arrays.c.

◆ N_is_array_2d_value_null()

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.

Referenced by N_compute_gradient_field_2d().

◆ N_is_array_3d_value_null()

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 873 of file n_arrays.c.

Referenced by N_compute_gradient_field_3d().

◆ N_print_array_2d()

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 628 of file n_arrays.c.

◆ N_print_array_2d_info()

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 603 of file n_arrays.c.

Referenced by N_print_gradient_field_2d_info().

◆ N_print_array_3d()

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 1196 of file n_arrays.c.

◆ N_print_array_3d_info()

void N_print_array_3d_info ( N_array_3d data)

Write the info of the array to stdout.

Parameters
dataN_array_3d *
Returns
void

Definition at line 1170 of file n_arrays.c.

Referenced by N_print_gradient_field_3d_info().

◆ N_put_array_2d_c_value()

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 516 of file n_arrays.c.

◆ N_put_array_2d_d_value()

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.

Parameters
dataN_array_2d *
colint
rowint
valueDCELL
Returns
void

Definition at line 576 of file n_arrays.c.

Referenced by N_compute_gradient_field_2d(), and N_compute_gradient_field_components_2d().

◆ N_put_array_2d_f_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 546 of file n_arrays.c.

◆ N_put_array_2d_value()

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 412 of file n_arrays.c.

◆ N_put_array_2d_value_null()

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 459 of file n_arrays.c.

◆ N_put_array_3d_d_value()

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 1148 of file n_arrays.c.

Referenced by N_compute_gradient_field_3d(), and N_compute_gradient_field_components_3d().

◆ N_put_array_3d_f_value()

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 1121 of file n_arrays.c.

◆ N_put_array_3d_value()

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
valuechar *
Returns
void

Definition at line 1010 of file n_arrays.c.

◆ N_put_array_3d_value_null()

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 1060 of file n_arrays.c.