Loading...
Searching...
No Matches
n_arrays_calc.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_calc.c:

Go to the source code of this file.

## Functions

void | N_copy_array_2d (N_array_2d *source, N_array_2d *target)
| Copy the source N_array_2d struct to the target N_array_2d struct.
double | N_norm_array_2d (N_array_2d *a, N_array_2d *b, int type)
| Calculate the norm of the two input arrays.
void | N_calc_array_2d_stats (N_array_2d *a, double *min, double *max, double *sum, int *nonull, int withoffset)
| Calculate basic statistics of the N_array_2d struct.
N_array_2d * | N_math_array_2d (N_array_2d *a, N_array_2d *b, N_array_2d *result, int type)
| Perform calculations with two input arrays, the result is written to a third array.
int | N_convert_array_2d_null_to_zero (N_array_2d *a)
| Convert all null values to zero values.
void | N_copy_array_3d (N_array_3d *source, N_array_3d *target)
| Copy the source N_array_3d struct to the target N_array_3d struct.
double | N_norm_array_3d (N_array_3d *a, N_array_3d *b, int type)
| Calculate the norm of the two input arrays.
void | N_calc_array_3d_stats (N_array_3d *a, double *min, double *max, double *sum, int *nonull, int withoffset)
| Calculate basic statistics of the N_array_3d struct.
N_array_3d * | N_math_array_3d (N_array_3d *a, N_array_3d *b, N_array_3d *result, int type)
| Perform calculations with two input arrays, the result is written to a third array.
int | N_convert_array_3d_null_to_zero (N_array_3d *a)
| Convert all null values to zero values.

## Function Documentation

## N_calc_array_2d_stats()

void N_calc_array_2d_stats | ( | N_array_2d * | a,
|  | double * | min,
|  | double * | max,
|  | double * | sum,
|  | int * | nonull,
|  | int | withoffset )

Calculate basic statistics of the N_array_2d struct.

Calculates the minimum, maximum, sum and the number of non null values. The array offset can be included in the calculation.

Parameters

  a | N_array_2d * - input array
  min | double* - variable to store the computed minimum
  max | double* - variable to store the computed maximum
  sum | double* - variable to store the computed sum
  nonull | int* - variable to store the number of non null values
  withoffset | - if 1 include offset values in statistic calculation, 0 otherwise

Returns
  void

Definition at line 213 of file n_arrays_calc.c.

References G_debug(), max, min, N_get_array_2d_d_value(), and N_is_array_2d_value_null().

Referenced by N_calc_gradient_field_2d_stats().

## N_calc_array_3d_stats()

void N_calc_array_3d_stats | ( | N_array_3d * | a,
|  | double * | min,
|  | double * | max,
|  | double * | sum,
|  | int * | nonull,
|  | int | withoffset )

Calculate basic statistics of the N_array_3d struct.

Calculates the minimum, maximum, sum and the number of non null values. The array offset can be included in the statistical calculation.

Parameters

  a | N_array_3d * - input array
  min | double* - variable to store the computed minimum
  max | double* - variable to store the computed maximum
  sum | double* - variable to store the computed sum
  nonull | int* - variable to store the number of non null values
  withoffset | - if 1 include offset values in statistic calculation, 0 otherwise

Returns
  void

Definition at line 627 of file n_arrays_calc.c.

References G_debug(), max, min, N_get_array_3d_d_value(), and N_is_array_3d_value_null().

Referenced by N_calc_gradient_field_3d_stats().

## N_convert_array_2d_null_to_zero()

int N_convert_array_2d_null_to_zero | ( | N_array_2d * | a | ) |

Convert all null values to zero values.

The complete data array inclusively offsets is used. The array data types are automatically recognized.

Parameters

  a | N_array_2d *

Returns
  int - number of replaced values

Definition at line 418 of file n_arrays_calc.c.

References count, and G_debug().

## N_convert_array_3d_null_to_zero()

int N_convert_array_3d_null_to_zero | ( | N_array_3d * | a | ) |

Convert all null values to zero values.

The complete data array inclusively offsets is used.

Parameters

  a | N_array_3d *

Returns
  int - number of replaced null values

Definition at line 832 of file n_arrays_calc.c.

References count, and G_debug().

## N_copy_array_2d()

void N_copy_array_2d | ( | N_array_2d * | source,
|  | N_array_2d * | target )

Copy the source N_array_2d struct to the target N_array_2d struct.

The arrays must have the same size and the same offset.

The array types can be mixed, the values are automatically casted and the null values are set accordingly.
If you copy a cell array into a dcell array, the values are casted to dcell and the null values are converted from cell-null to dcell-null
This function can be called in a parallel region defined with OpenMP. The copy loop is parallelize with a openmp for pragma.

Parameters

  source | N_array_2d *
  target | N_array_2d *

Returns
  void

Definition at line 43 of file n_arrays_calc.c.

References N_array_2d::cell_array, N_array_2d::cols_intern, N_array_2d::dcell_array, N_array_2d::fcell_array, G_debug(), G_fatal_error(), N_array_2d::rows_intern, and N_array_2d::type.

Referenced by N_copy_gradient_field_2d().

## N_copy_array_3d()

void N_copy_array_3d | ( | N_array_3d * | source,
|  | N_array_3d * | target )

Copy the source N_array_3d struct to the target N_array_3d struct.

The arrays must have the same size and the same offset.

The array data types can be mixed, the values are automatically casted and the null values are set accordingly.

If you copy a float array to a double array, the values are casted to DCELL and the null values are converted from FCELL-null to DCELL-null

Parameters

  source | N_array_3d *
  target | N_array_3d *

Returns
  void

Definition at line 485 of file n_arrays_calc.c.

References N_array_3d::cols_intern, N_array_3d::dcell_array, N_array_3d::depths_intern, N_array_3d::fcell_array, G_debug(), G_fatal_error(), N_array_3d::rows_intern, and N_array_3d::type.

Referenced by N_copy_gradient_field_3d().

## N_math_array_2d()

N_array_2d * N_math_array_2d | ( | N_array_2d * | a,
|  | N_array_2d * | b,
|  | N_array_2d * | result,
|  | int | type )

Perform calculations with two input arrays, the result is written to a third array.

All arrays must have equal sizes and offsets. The complete data array inclusively offsets is used for calculations. Only non-null values are computed. If one array value is null, the result array value will be null too.
If a division with zero is detected, the resulting arrays value will set to null and not to NaN.
The result array is optional, if the result arrays points to NULL, a new array will be allocated with the largest arrays data type (CELL, FCELL or DCELL) used by the input arrays.
the array computations can be of the following forms:

- result = a + b -> N_ARRAY_SUM
- result = a - b -> N_ARRAY_DIF
- result = a * b -> N_ARRAY_MUL
- result = a / b -> N_ARRAY_DIV

Parameters

  a | N_array_2d * - first input array
  b | N_array_2d * - second input array
  result | N_array_2d * - the optional result array
  type | - the type of calculation

Returns
  N_array_2d * - the pointer to the result array

Definition at line 299 of file n_arrays_calc.c.

References b, G_debug(), G_fatal_error(), N_alloc_array_2d(), N_ARRAY_DIF, N_ARRAY_DIV, N_ARRAY_MUL, N_ARRAY_SUM, N_get_array_2d_d_value(), N_is_array_2d_value_null(), N_put_array_2d_c_value(), N_put_array_2d_d_value(), N_put_array_2d_f_value(), N_put_array_2d_value_null(), and NULL.

## N_math_array_3d()

N_array_3d * N_math_array_3d | ( | N_array_3d * | a,
|  | N_array_3d * | b,
|  | N_array_3d * | result,
|  | int | type )

Perform calculations with two input arrays, the result is written to a third array.

All arrays must have equal sizes and offsets. The complete data array inclusively offsets is used for calculations. Only non-null values are used. If one array value is null, the result array value will be null too.

If a division with zero is detected, the resulting arrays value will set to null and not to NaN.

The result array is optional, if the result arrays points to NULL, a new array will be allocated with the largest arrays data type (FCELL_TYPE or DCELL_TYPE) used by the input arrays.

the calculations are of the following form:

- result = a + b -> N_ARRAY_SUM
- result = a - b -> N_ARRAY_DIF
- result = a * b -> N_ARRAY_MUL
- result = a / b -> N_ARRAY_DIV

Parameters

  a | N_array_3d * - first input array
  b | N_array_3d * - second input array
  result | N_array_3d * - the optional result array
  type | - the type of calculation

Returns
  N_array_3d * - the pointer to the result array

Definition at line 723 of file n_arrays_calc.c.

References b, G_debug(), G_fatal_error(), N_alloc_array_3d(), N_ARRAY_DIF, N_ARRAY_DIV, N_ARRAY_MUL, N_ARRAY_SUM, N_get_array_3d_d_value(), N_is_array_3d_value_null(), N_put_array_3d_d_value(), N_put_array_3d_f_value(), N_put_array_3d_value_null(), and NULL.

## N_norm_array_2d()

double N_norm_array_2d | ( | N_array_2d * | a,
|  | N_array_2d * | b,
|  | int | type )

Calculate the norm of the two input arrays.

The norm can be of type N_MAXIMUM_NORM or N_EUKLID_NORM. All arrays must have equal sizes and offsets. The complete data array inclusively offsets is used for norm calculation. Only non-null values are used to calculate the norm.

Parameters

  a | N_array_2d *
  b | N_array_2d *
  type | the type of the norm -> N_MAXIMUM_NORM, N_EUKLID_NORM

Returns
  double the calculated norm

Definition at line 142 of file n_arrays_calc.c.

References b, G_debug(), G_fatal_error(), N_EUKLID_NORM, and N_MAXIMUM_NORM.

## N_norm_array_3d()

double N_norm_array_3d | ( | N_array_3d * | a,
|  | N_array_3d * | b,
|  | int | type )

Calculate the norm of the two input arrays.

The norm can be of type N_MAXIMUM_NORM or N_EUKLID_NORM. All arrays must have equal sizes and offsets. The complete data array inclusively offsets is used for norm calculation. Only non-null values are used to calculate the norm.

Parameters

  a | N_array_3d *
  b | N_array_3d *
  type | the type of the norm -> N_MAXIMUM_NORM, N_EUKLID_NORM

Returns
  double the calculated norm

Definition at line 556 of file n_arrays_calc.c.

References b, G_debug(), G_fatal_error(), N_EUKLID_NORM, and N_MAXIMUM_NORM.