escript Revision_
paso::util Namespace Reference

Functions

int comparIndex (const void *index1, const void *index2)
 this int-comparison function is used by qsort/bsearch in various places
 
bool isAny (dim_t N, const index_t *array, index_t value)
 returns true if array contains value
 
dim_t numPositives (dim_t N, const double *x, escript::JMPI mpiInfo)
 returns the number of positive values in x
 
index_t iMax (dim_t N, const index_t *array)
 returns the maximum value in integer array
 
index_t cumsum (dim_t N, index_t *array)
 calculates the cumulative sum in array and returns the total sum
 
index_t cumsum_maskedTrue (dim_t N, index_t *array, int *mask)
 
index_t cumsum_maskedFalse (dim_t N, index_t *array, int *mask)
 
index_t arg_max (dim_t N, dim_t *lambda)
 returns the index to the largest entry in lambda
 
void zeroes (dim_t N, double *x)
 fills array x with zeroes
 
void update (dim_t n, double a, double *x, double b, const double *y)
 
void linearCombination (dim_t n, double *z, double a, const double *x, double b, const double *y)
 
double innerProduct (dim_t N, const double *x, const double *y, escript::JMPI mpiInfo)
 returns the inner product of global arrays x and y
 
double lsup (dim_t N, const double *x, escript::JMPI mpiInfo)
 returns the global Lsup of x
 
double l2 (dim_t N, const double *x, escript::JMPI mpiInfo)
 returns the global L2 norm of x
 
void applyGivensRotations (dim_t n, double *v, const double *c, const double *s)
 
void copy (dim_t N, double *out, const double *in)
 out = in
 
void scale (dim_t N, double *x, double a)
 x = a*x
 
void AXPY (dim_t N, double *x, double a, const double *y)
 x = x+a*y
 
bool samesign (double a, double b)
 returns true if both arguments have the same sign, false otherwise
 

Function Documentation

◆ applyGivensRotations()

void paso::util::applyGivensRotations ( dim_t N,
double * v,
const double * c,
const double * s )

Applies a sequence of N-1 Givens rotations (c,s) to v of length N which is assumed to be small.

Referenced by paso::Solver_GMRES2().

◆ arg_max()

index_t paso::util::arg_max ( dim_t n,
dim_t * lambda )

returns the index to the largest entry in lambda

◆ AXPY()

void paso::util::AXPY ( dim_t N,
double * x,
double a,
const double * y )
inline

◆ comparIndex()

◆ copy()

◆ cumsum()

index_t paso::util::cumsum ( dim_t N,
index_t * array )

calculates the cumulative sum in array and returns the total sum

References paso::N.

Referenced by paso::Pattern::getSubpattern(), and paso::Solver_getRILU().

◆ cumsum_maskedFalse()

index_t paso::util::cumsum_maskedFalse ( dim_t N,
index_t * array,
int * mask )

References paso::N.

◆ cumsum_maskedTrue()

index_t paso::util::cumsum_maskedTrue ( dim_t N,
index_t * array,
int * mask )

References paso::N.

◆ iMax()

index_t paso::util::iMax ( dim_t N,
const index_t * array )

returns the maximum value in integer array

References escript::DataTypes::index_t_min(), and paso::N.

◆ innerProduct()

double paso::util::innerProduct ( dim_t n,
const double * x,
const double * y,
escript::JMPI mpiinfo )

returns the inner product of global arrays x and y

References MPI_DOUBLE, and MPI_SUM.

Referenced by paso::Solver_GMRES2(), paso::Solver_MINRES(), and paso::Solver_TFQMR().

◆ isAny()

bool paso::util::isAny ( dim_t N,
const index_t * array,
index_t value )

returns true if array contains value

References paso::N.

Referenced by paso::Pattern::borrowColoringPointer(), and paso::Pattern::mis().

◆ l2()

double paso::util::l2 ( dim_t n,
const double * x,
escript::JMPI mpiinfo )

◆ linearCombination()

void paso::util::linearCombination ( dim_t N,
double * z,
double a,
const double * x,
double b,
const double * y )

Performs an update of the form z = a*x+b*y where y and x are long vectors. If a=0, x is not used; if b=0, y is not used.

Referenced by copy(), paso::Function::derivative(), and paso::Solver_TFQMR().

◆ lsup()

double paso::util::lsup ( dim_t n,
const double * x,
escript::JMPI mpiinfo )

◆ numPositives()

dim_t paso::util::numPositives ( dim_t N,
const double * x,
escript::JMPI mpiInfo )

returns the number of positive values in x

References MPI_SUM, and paso::N.

◆ samesign()

bool paso::util::samesign ( double a,
double b )
inline

returns true if both arguments have the same sign, false otherwise

◆ scale()

void paso::util::scale ( dim_t N,
double * x,
double a )
inline

x = a*x

References paso::N, and update().

Referenced by paso::Solver_MINRES(), and paso::FCT_Solver::updateLCN().

◆ update()

void paso::util::update ( dim_t N,
double a,
double * x,
double b,
const double * y )

Performs an update of the form x = a*x+b*y where y and x are long vectors. If b=0, y is not used.

Referenced by AXPY(), paso::Function::derivative(), scale(), paso::Solver_GMRES2(), paso::Solver_NewtonGMRES(), paso::Solver_TFQMR(), paso::FCT_Solver::updateLCN(), and paso::FCT_Solver::updateNL().

◆ zeroes()

void paso::util::zeroes ( dim_t n,
double * x )