escript Revision_
Functions
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()

int paso::util::comparIndex ( const void *  index1,
const void *  index2 
)

◆ copy()

void paso::util::copy ( dim_t  N,
double *  out,
const double *  in 
)
inline

◆ 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 
)