9 #include "singularCoarse.h"
11 namespace singularCoarse {
13 void setNullSpace(
double *V,
int row,
int col,
double *VtV,
const Epetra_Comm *_Comm) {
18 QcoarseTQcoarse = VtV;
23 void projection(
double *z,
int *options,
int *proc_config,
double *params,
24 AZ_MATRIX_STRUCT *Amat, AZ_PREC_STRUCT *prec) {
37 double *tmp =
new double[2*colQcoarse];
38 memset(tmp, 0, 2*colQcoarse*
sizeof(
double));
42 for (
int i = 0; i < 2; ++i) {
44 callBLAS.
GEMV(
'T',rowQcoarse,colQcoarse,1.0,Qcoarse,rowQcoarse,z,0.0,tmp+colQcoarse);
46 commCoarse->SumAll(tmp + colQcoarse, tmp, colQcoarse);
48 callLAPACK.
POTRS(
'U', colQcoarse, 1, QcoarseTQcoarse, colQcoarse, tmp, colQcoarse, &info);
49 callBLAS.
GEMV(
'N', rowQcoarse, colQcoarse, -1.0, Qcoarse, rowQcoarse, tmp, 1.0, z);
void GEMV(const char TRANS, const int M, const int N, const float ALPHA, const float *A, const int LDA, const float *X, const float BETA, float *Y, const int INCX=1, const int INCY=1) const
void POTRS(const char UPLO, const int N, const int NRHS, const float *A, const int LDA, float *X, const int LDX, int *INFO) const